文章目录
一、python中的图形用户界面开发库
1.Tkinter
Tkinter是python官方提供的图形用户界面开发库,用于封装Tk GUI工具包,跨平台。
2.PyQt
PyQt是非Python官方提供的图形用户界面开发库,用于封装Qt工具包,跨平台。
3.wxPython
wxPython是非Python官方提供的图形用户界面开发库,也跨平台。
若要构建一个简单的wxPython程序,则至少需要一个应用(wx.App)对象和一个窗口(wx.Frame)对象。
#coding=utf-8
import wx #wx是使用wxPython时要导入的模块
#创建应用程序对象
app = wx.App()
#创建窗口对象
frm = wx.Frame(None, title="第一个wxPython程序!",size=(400, 300), pos=(100, 100)) #所在的父窗口,None表示没有父窗口;size表示窗口大小;pos表示窗口位置。
#显示窗口
frm.Show() #窗口默认隐藏,需要调用Show()方法才能显现。
#进入主事件循环
app.MainLoop() #让应用程序进入主事件循环中
4.自定义窗口类
#coding=utf-8
import wx
#自定义窗口类MyFrame
class MyFrame(wx.Frame): #自定义窗口类
def_init_(self):
super()._init_(None, title="第一个wxPython程序", size=(400, 300), pos=(100, 100))
#你的代码
#窗口中的控件,在这里添加
#创建应用程序对象
app = wx.App()
#创建窗口对象
frm = MyFrame()
#显示窗口
frm.Show()
#进入主事件循环
app.MainLoop()
5.在窗口中添加控件
#coding=utf-8
import wx
#自定义窗口类MyFrame
class MyFrame(wx.Frame):
def _init_(self):
super()._init_(None, title="第一个wxPython程序", size=(400,300), pos=(100, 100))
panel = wx.Panel(parent=self) #创建面板对象,参数parent传递的是self,即设置面板所在的父容器为当前窗口对象。
statictext = wx.StaticText(parent=panel, label='Hello World!', pos=(10, 10)) #创建静态文本(StaticText)对象,将静态文本对象放到panel面板中。
#parent参数传递的是panel
#参数label是在静态文本对象上显示的文字
#参数pos用于设置静态文本对象。
app.wx.App() #创建应用程序对象
frm = MyFrame() #创建窗口对象
frm.Show() #显示窗口
app.MainLoop() #进入主事件循环
在以上事例中,面板被放到窗口中,而静态文本对象被放到面板中。
二、事件处理
1.事件源
事件发生的场所,就是各个控件。(例如:按钮事件的事件源是按钮)
2.事件
wxPython中的事件被封装为事件类wx.Event及其子类,例如按钮事件类wx.CommandEvent,鼠标事件类是wx.MoveEvent。
3.事件处理程序
一个响应用户事件的方法。
示例:
#coding=utf-8
import wx
#自定义窗口类MyFrame
class MyFrame(wx.Frame):
def _init_(self):
super()._init_(None, title="事件处理", size=(300, 180))
panel = wx.Panel(parent=self)
self.statictext = wx.StaticText(parent=panel, label="请单击OK按钮", pos=(110. 20))
b = wx.Button(parent=panel, label='OK', pos=(100, 50)