wxPython - Công cụ tạo GUI

Tạo một GUI đẹp bằng cách viết mã thủ công có thể rất tẻ nhạt. Một công cụ thiết kế GUI trực quan luôn tiện dụng. Nhiều IDE phát triển GUI được nhắm mục tiêu vào wxPython có sẵn. Sau đây là một số trong số họ -

  • wxFormBuilder
  • wxDesigner
  • wxGlade
  • BoaConstructor
  • gui2py

wxFormBuilderlà một trình tạo WYSIWYG GUI đa nền tảng, mã nguồn mở, có thể dịch thiết kế wxWidget GUI sang định dạng C ++, Python, PHP hoặc XML. Giới thiệu ngắn gọn về cách sử dụng wxFormBuilder được đưa ra ở đây.

Trước hết, cần tải xuống và cài đặt phiên bản mới nhất của wxFormBuilder từ http://sourceforge.net/projects/wxformbuilder/. Khi mở ứng dụng, một dự án mới với vùng trống màu xám ở trung tâm sẽ xuất hiện.

Đặt tên phù hợp cho dự án và chọn Python làm ngôn ngữ tạo mã. Điều này được thực hiện trong cửa sổ thuộc tính đối tượng như thể hiện trong hình ảnh sau:

Sau đó, từ tab 'Biểu mẫu' của bảng thành phần, chọn Khung.

Thêm một wxBoxSizer dọc từ tab 'Bố cục'.

Thêm các điều khiển cần thiết trong Hộp với chú thích phù hợp. Tại đây, một StaticText (nhãn), hai đối tượng TextCtrl (hộp văn bản) và một đối tượng wxButton được thêm vào. Khung trông giống như hình sau:

Bật Mở rộng và Kéo dài trên ba điều khiển này. Trong thuộc tính đối tượng cho đối tượng wxButton, gán một hàm findquare () cho sự kiện OnButtonClick.

Lưu dự án và nhấn F8 để tạo mã Python cho GUI đã phát triển. Đặt tên tệp đã tạo là Demo.py

Trong tập lệnh Python thực thi, hãy nhập demo.py và xác định hàm FindSquare (). Khai báo đối tượng Ứng dụng và bắt đầu một vòng lặp sự kiện chính. Sau đây là mã thực thi:

import wx 
  
#import the newly created GUI file 
import demo  
class CalcFrame(demo.MyFrame1): 
   def __init__(self,parent): 
      demo.MyFrame1.__init__(self,parent)  
		
   def FindSquare(self,event): 
      num = int(self.m_textCtrl1.GetValue()) 
      self.m_textCtrl2.SetValue (str(num*num)) 
        
app = wx.App(False) 
frame = CalcFrame(None) 
frame.Show(True) 
#start the applications 
app.MainLoop()

Đoạn mã trên tạo ra kết quả sau: