文章目录
- wxPython程序
- 主事件循环通俗解释
- 在窗口中添加控件
wxPython程序
import wx
app = wx.App()
frm = wx.Frame(None, title='第一个wxPython程序', size=(400, 300), pos=(100, 100))
frm.Show()
app.MainLoop()
app.MainLoop() 让应用程序进入主事件循环中。事件循环是一种事件或消息分发处理机制,大部分图形用户界面在界面中的显示及响应用户事件的处理都是通过主事件循环实现的。
主事件循环通俗解释
事件循环(Event Loop)是 GUI 应用程序的核心机制之一,它负责处理所有的用户输入、系统消息和事件,从而允许应用程序对用户的操作作出响应。
通俗解释
可以把事件循环想象成一个办公室文员,他坐在办公桌前,不断地处理各种任务(事件)。这些任务可能是打开邮件、接电话、文件归档或者处理客户请求。这个文员的工作方式如下:
不间断循环:文员从早上上班到晚上下班,一直在桌前等待新的任务到来。
处理任务:每当有新的任务到来,文员会暂停等待状态,处理这个任务。
完成任务:一旦任务完成,文员会继续回到等待状态,准备处理下一个任务。
在 GUI 应用程序中,事件循环类似于这个文员的行为:
等待事件:程序启动后,进入一个无限循环,等待用户的输入或系统的消息,比如鼠标点击、键盘输入、窗口关闭请求等。
处理事件:一旦有事件发生(比如用户点击了一个按钮),事件循环会根据预先定义的事件处理函数来处理这个事件。
返回等待状态:处理完当前事件后,事件循环会回到等待状态,继续等待下一个事件的发生。
例子说明
假设你有一个简单的 GUI 应用程序,它有一个按钮,当你点击它时,会显示一个消息框。事件循环的工作流程如下:
程序启动:应用程序启动并显示一个带按钮的窗口。
进入事件循环:应用程序进入事件循环,开始等待用户输入。
等待事件:事件循环在后台不断检查是否有新的事件(如鼠标点击、键盘输入等)。
用户点击按钮:用户点击了按钮,触发了一个点击事件。
处理点击事件:事件循环捕捉到这个点击事件,并调用相应的事件处理函数来显示一个消息框。
继续等待:消息框显示完毕后,事件处理函数结束,事件循环继续等待下一个事件。
在窗口中添加控件
import wx
class MyFrame(wx.Frame):
def __init__(self):
super().__init__(None, title="第一个wxPython程序", size=(400, 300))
panel = wx.Panel(self)
statictext = wx.StaticText(panel, label="点我", pos=(10, 10))
app = wx.App()
frm = MyFrame()
frm.Show()
app.MainLoop()
控件可以直接放到窗口中,在布局时会有很多问题。
控件的位置和大小都使用了绝对数值,这就是绝对布局。绝对布局有很多问题,在进行界面布局时尽量不要采用绝对布局。