1.2 Adding the main frame
绝大部分应用拥有某种主窗口去让其用户与软件交互。在wxPython里,这个window称作frame。frame是wxPython里最高等级的容器和建立大部分UI(user interfaces)的基础。这章会展示怎么构造一个frame并将其添加到一个应用中。
怎么做
- 写一个wx.Frame的子类
class MyFrame(wx.Frame):
def __init__(self, parent, title=""):
super(MyFrame, self).__init__(parent, title=title)
# Set the panel
self.panel = wx.Panel(self)
2.创建一个该类的对象并显示
class MyApp(wx.App):
def OnInit(self):
self.frame = MyFrame(None, title="Main Frame")
self.frame.Show()
return True
if __name__ == "__main__":
app = MyApp(False)
app.MainLoop()
它是怎么工作的
- Frame类创建一个最高级别的窗口,该窗口可以用来提供(present)任何数量的其他控件。
- 创建一个frame可以没有父窗口而且会一直停留在应用里直到用户关闭它
我们创建了Panel对象并设置了frame为其父窗口
* Panel是平面四边形控制部件(四边形)用于包含其他部件
* Panel会在frame边框内部作为长方形区域显示
最后,在app的OnInit方法中,我们创建了一个制定的frame实例,然后通过Show方法让该实例显示到屏幕上。这一节内容可以用于创建任何wxPthon应用
更多
wx.Frame对象的构造方法拥有一些样式标记(style flags)去指定所生成对象的行为和外观
样式标记(style flags) | 描述 |
---|---|
wx.DEFAULT_FRAME_STYLE | 这个标记位掩码包含所有其他下面描述的内容 |
wx.MINIMIZE_BOX | 在标题栏上显示最小化按钮 |
wx.MAXIMIZE_BOX | 在标题栏上显示最大化按钮 |
wx.RESIZE_BORDER | 允许用户调整frame的大小 |
wx.CAPTION | 在标题栏上显示标题说明(title caption) |
wx.CLOSE_BOX | 在标题栏上显示关闭按钮 |
wx.SYSTEM_MENU | 显示一个系统菜单(在Windows中,这个菜单会在点击icon时出现) |
wx.CLIP_CHILDREN | 消除背景重绘时的闪烁(Windows Only) |
wxFormBuilder中Frame的标记位:
这些样式标记可以通过任意位运算关闭或开启。如关闭标题栏最大化按钮
style = wx.DEFAULT_FRAME_STYLE&~wx.MAXIMIZE_BOX