安装wxPython
dos命令窗口,输入命令
pip install -U wxPython
创建一个wx.App的子类
import wx
class App(wx.App):
def OnInit(self):
frame=wx.Frame(parent=None,title='Hello')
frame.Show()
return True
if __name__ == '__main__':
app=App()
app.MainLoop() #调用App类的MainLoop()主循环方法
直接使用wx.App
通常在系统中只有一个窗口的话,可以不创建wx.App子类,直接使用wx.App。
这个类提供了最基本的OnInit()初始化方法,具体如下:
import wx
app=wx.App()
frame=wx.Frame(None,title='Hello World')
frame.Show()
app.MainLoop()
wx.Frame 的构造器语法格式
Wx. Frame(parent, id=-1, title="",pos=wx.DefaultPosition, size=wx.DefaultSize,
style=wx.DEFAULT_FRAME_STYLE, name= "frame”)
参数说明:
- **parent:**框架的父窗口。如果是顶级窗口,这个值是None。
- **id:**关于新窗口的wxPythonID号。通常设为-1, 让wxPython自动生成-一个新的ID。
- title: 窗口的标题。
- **pos:**一个wx.Point对象,它指定这个新窗口的左上角在屏幕中的位置。在图形用户界面程序中,通常(0,0)是显示器的左上角。这个默认的(-1,-1)将让系统决定窗口的位置。
- **size:**一个wx.Size对象,它指定这个窗口的初始尺寸。这个默认的(-1,- 1)将让系统决定窗口的初始尺寸。
- style: 指定窗口的类型的常量。可以使用或运算来组合它们。
- **name:**框架的内在的名字。可以使用它来寻找这个窗口。
import wx
class MyFrame(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,title='hello',pos=(100,100),size=(300,300))
if __name__ == '__main__':
app=wx.App()
frame=MyFrame(parent=None,id=1)
frame.Show()
app.MainLoop()
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPB50dnRkTy0keNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL4MjMyQDN1QTM2ITNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
常用控件
-
StaticText 文本类
WX. StaticText (parent, id, label, pos=wx.DefaultPosition, size=wx.DefaultSize,
style=0, name=" staticText" )
- **parent:**父窗口部件。
- **id:**标识符。使用-1可以自动创建-一个唯- -的标识。
- **label:**显示在静态控件中的文本内容。
- **pos:**一个wx.Point或-一个Python元组,它是窗口部件的位置。
- **size:**一个wx.Size或- -个Python元组,它是窗口部件的尺寸。
- **style:**样式标记。
- **name:**对象的名字。
import wx
#StaticText 文本类
class MyFrame(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,title='文本类',pos=(100,100),size=(400,400))
panel=wx.Panel(self) #创建画板
#创建标题,并设置字体
title=wx.StaticText(panel,label='这是标题',pos=(100,20))
font=wx.Font(16,wx.DEFAULT,wx.FONTSTYLE_NORMAL,wx.NORMAL)
title.SetFont(font)
#创建文本
wx.StaticText(panel,label='这是内容',pos=(50,50))
if __name__ == '__main__':
app=wx.App()
frame=MyFrame(parent=None,id=-1)
frame.Show()
app.MainLoop()
TextCtrl 输入文本类
Wx. TextCtrl( parent,id,value="", pos=wx.DefaultPosition, size=wx.DefaultSize,
sty1e=0, validator=wx.DefaultValidator name=wx.TextCtrlNameStr)
-
**style:**单行wx.TextCtrl的样式,取值及说明如下:
◆ **wx.TE_ CENTER:**控件中的文本居中。
◆ **wx.TE_ LEFT:**控件中的文本左对齐。默认行为。
◆ **wx.TE_ NOHIDESEL:**文本始终高亮显示,只适用于Windows。
◆ wx.TE_ PASSWORD: 不显示所键入的文本,以星号(*) 代替显示。
◆ wx.TE_ PROCESS_ ENTER: 如果使用改参数,那么当用户在控件内按下键时,一个文本输入事件将被触发;否则,按键事件内在的由该文本控件或该对话框管理。
◆ **wx.TE_ PROCESS_ TAB:**如果指定了这个样式,那么通常的字符事件在键按下时创建(一般意味-一个制表符将被插入文本);否则,键由对话框来管理,通常是控件间的切换。
◆ **wx.TE_ READONLY 😗*文本控件为只读,用户不能修改其中的文本。
◆ **wx.TE_ RIGHT 😗*控件中的文本右对齐。
- **value:**显示在该控件中的初始文本。
- **validator:**常用于过虑数据以确保只能键入要接受的数据。
import wx
#TextCtrl输入文本类
class MyFrame(wx.Frame):
def __init__(self,parent,id):
wx.Frame.__init__(self,parent,id,title='文本类',size=(400,400))
#创建面板
panel=wx.Panel(self)
#创建文本和输入框
self.title=wx.StaticText(panel,label="请输入用户名",pos=(140,20))
self.label_user=wx.StaticText(panel,label='用户名',pos=(50,50))
self.text_user=wx.TextCtrl(panel,pos=(100,50),size=(235,25),style=wx.TE_LEFT)
if __name__ == '__main__':
app=wx.App()
frame=MyFrame(parent=None,id=-1)
frame.Show()
app.MainLoop()
#### Button 按钮类
事件处理
绑定事件
- **wx.EVT. BUTTON:**事件类型为按钮类型。在wxPython中有很多wx.EVT_开头的事件类型,例如,类型wx.EVT MOTION产生于用户移动鼠标:类型wx ENTER WINDOW和wxLEAVE WINDOW产生于当鼠标进入或离开一一个 窗口控件;类型wx. EVT_ MOUSEWHEEL被绑定到鼠标滚轮的活动。
- OnclickSubmit: 方法名。事件发生时执行该方法。
self.bt_confirm=wx.Button(panel,label="确定",pos=(105,130))
self.bt_confirm.Bind(wx.EVT_BUTTON,self.OnclickSubmit)
def OnclickSubmit(self,event):
username=self.text_user.GetValue()
wx.MessageBox(username)