**基本组件**

面板(Panel)
所有组件都要放在面板上。(每个控件都有一个参数parent,就是给它留的。当然它自己的parent是wx.Frame实例)
wx.Panel(parent, id=ID_ANY, pos=DefaultPosition, size=DefaultSize, style=TAB_TRAVERSAL, name=PanelNameStr)
静态文本(StaticText)
wx.StaticText(parent, id=ID_ANY,label="", pos=DefaultPosition, size=DefaultSize, style=0, name=StaticTextNameStr)
文本输入框(TextCtrl)
wx.TextCtrl(parent, id=ID_ANY, value="", pos=DefaultPosition,size=DefaultSize, style=0, validator=DefaultValidator, name=TextCtrlNameStr)
按钮(Button)
基础按钮控件。
wx.Button(parent, id=ID_ANY, label="", pos=DefaultPosition, size=DefaultSize, style=0, validator=DefaultValidator, name=ButtonNameStr)
列表框(ListCtrl)
展示完整的表格文本。
wx.ListCtrl(parent, id=ID_ANY, pos=DefaultPosition, size=DefaultSize, style=LC_ICON, validator=DefaultValidator, name=ListCtrlNameStr)
下拉选择框(Choice)
创建选项,用于选择其中之一。
wx.Choice(parent, id=ID_ANY, pos=DefaultPosition, size=DefaultSize, choices=[ ], style=0, validator=DefaultValidator, name=ChoiceNameStr)
字体控制(Font)
创建字体,为其它控件的文字服务。
wx.Font(pointSize, family, style, weight, underline=False , faceName="", encoding=FONTENCODING_DEFAULT)
容器(Boxsizer)
一个为其他组件合理分配空间以使界面看起来更整洁的容器组件。
wx.BoxSizer(orient=HORIZONTAL)
常用方法:boxSizer.Add()、
panel.SetSizerAndFit(boxSizer)
图标(Icon)
给应用程序设定一个图标Logo。
wx.Icon(name, type=BITMAP_TYPE_ANY, desiredWidth=-1, desiredHeight=-1)
上述所述组件的简单代码实现
import wx
class Frame(wx.Frame): def init(self): wx.Frame.init(self, None, title='wxpython基本组件介绍') self.InitUI()
def InitUI(self): #面板 panel = wx.Panel(self)
#文本 staticText = wx.StaticText(panel, label='静态文本控件') dynamicText = wx.TextCtrl(panel, value='动态文本输入框') #按钮 button = wx.Button(panel, label='单击按钮') #列表 listText = wx.ListCtrl(panel); listText.InsertItem(0, '列表控件') #下拉列表选择 choiceList = wx.Choice(panel, choices=['下拉列表选择控件', '选项2', '选项3']); choiceList.SetSelection(0) #图标 icon = wx.Icon('icon_demo.ico'); self.SetIcon(icon) #字体改变 font = wx.Font(20, wx.DEFAULT, wx.NORMAL, wx.NORMAL, False, 'SimHei') demo = wx.StaticText(panel, label='字体变为黑体'); demo.SetFont(font) #容器 boxsizer = wx.BoxSizer(wx.VERTICAL) boxsizer.Add(staticText, wx.ALL); boxsizer.Add(dynamicText, wx.ALL); boxsizer.Add(button, wx.ALL); boxsizer.Add(listText, wx.ALL); boxsizer.Add(choiceList, wx.ALL); boxsizer.Add(demo, wx.ALL) panel.SetSizerAndFit(boxsizer)
class App(wx.App): def OnInit(self): frame = Frame() frame.Show() return True
if name == 'main': app = App() app.MainLoop()
**一个实用的窗体跳转模式**

这种模式会经常用到,譬如确认窗口、警告、温馨提示等等,用它就对了。
它包含简单的三个文件:Main.py、GUImanager.py、Frame.py。
Main.py负责重要的App类的创建以及应用程序的主循环。
import wx from guimanager import Manager
class MainApp(wx.App):
def OnInit(self): self.guimanager = Manager(self.UpdateUI) self.frame = self.guimanager.GetFrame(number=1) self.frame.Show() return True
def UpdateUI(self,number): self.frame = self.guimanager.GetFrame(number) self.frame.Show(True)
def main(): app = MainApp() app.MainLoop()
if name == 'main': main()
GUImanager.py负责两个(多者不限)窗体之间切换。
import wx
import frame
class Manager():
def init(self,UpdateUI): self.UpdateUI = UpdateUI self.frameDict = {} # 用来装载已经创建的Frame对象
def GetFrame(self,number): frame = self.frameDict.get(number)
if frame: pass else: frame = self.CreateFrame(number) self.frameDict[number] = frame
return frame
def CreateFrame(self,number): if number == 1: return frame.My_First_Frame(id=number, UpdateUI=self.UpdateUI) elif number == 2: return frame.My_Second_Frame(id=number, UpdateUI=self.UpdateUI)

Frame.py 顾名思义,就是窗体框架在这个文件中。
import wx
收集整理了一份《2024年最新Python全套学习资料》免费送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上Python知识点,真正体系化!