概述
wxWidgets是跨平台的GUI工具库,GUI工具库还包括GTK+、Qt 。GTK+是C实现的,由于C语言本身不支持OOP,因而GTK+上手相当困难。Qt 和 wxWidgets 则是C++实现的。
wxWidgets的主体是由C++构建的,但并不是必需通过C++才能使用它。wxWidgets拥有许多其它语言的绑定,比如 wxJava,wxJavaScript等等,wxPython 就是 Python语言的 wxWidgets 工具库。
注释
GUI是图形用户界面(Graphic user interface,GUI)
面向对象编程(Object Oriented Programming,简称OOP)是一种计算机编程架构
窗口程序的基本框架
可以用以下代码创建一个窗口。
import wx
# 初始化应用程序
app = wx.App()
# 创建一个Frame(窗体)并显示出来
frame = wx.Frame(None,0,"title")
frame.Show()
# 应用程序进入消息循环
app.MainLoop()
实现效果如下

Wx.Frame (parent, id, title, pos, size, style, name)
参数如下
| 参数1:parent | 当前窗口的父窗口,如果当前窗口是top-level window的话,则parent=None,如果不是顶层窗口,则它的值为所属frame的名字 |
| 参数2:id | 窗体编号。如果设置为-1,则系统自动给他分配一个编号。默认为-1. |
| 参数3:title | 窗体的标题栏,即Caption。默认为空。 |
| 参数4:pos | 窗体的位置坐标。默认值为(-1,-1),则窗体的位置由系统决定。 |
| 参数5:size | 窗体的大小。默认值为(-1,-1),则窗体的大小由系统决定。 |
| 参数6:style |
窗体样式。默认值为 DEFAULT_FRAME_STYLE 默认样式 DEFAULT_FRAME_STYLE 是下面这些值的复合: |
| 参数7:name | 窗体名称。 |
关于style
| wx.MAXIMIZE_BOX | 指示系统在框架的标题栏上显示一个最大化框,使用系统默认的位置和样式。 |
| wx.MINIMIZE_BOX | 指示系统在框架的标题栏上显示一个最小化框,使用系统默认的位置和样式。 |
| wx.RESIZE_BORDER | 给框架增加一个可以改变尺寸的边框。 |
| wx.SIMPLE_BORDER | 没有装饰的边框。不能工作在所有平台上。 |
| wx.SYSTEM_MENU | 增加系统菜单(带有关闭、移动、改变尺寸等功能)和关闭框到这个窗口。在系统菜单中的改变尺寸和关闭功能的有效性依赖于wx.MAXIMIZE_BOX, wx.MINIMIZE_BOX和wx.CLOSE_BOX样式是否被应用。 |
| wx.FRAME_EX_META | 如果时在 MacOS 中,这个属性用于是否显示“金属风格” |
| wx.FRAME_EX_CONTEXTHELP | 是否有联机帮助按钮。 |
| wx.FRAME_FLOAT_ON_PARENT | 窗口是否显示在最上层,与 wxSTAY_ON_TOP 不同,它必须有一个父窗口。 |
同样也可以构建一个类,继承wx.Frame
import wx
class MyFrame(wx.Frame):
def __init__(self, parent, title):
wx.Frame.__init__(self, parent, title=title, size=(300, 200))
self.panel = wx.Panel(self)
self.button = wx.Button(self.panel, label="Click Me")
self.Bind(wx.EVT_BUTTON, self.on_button_click, self.button)
self.Show(True)
def on_button_click(self, event):
wx.MessageBox('Hello wxPython', 'Message',
wx.OK | wx.ICON_INFORMATION)
app = wx.App(False)
frame = MyFrame(None, 'Hello wxPython')
frame.Show(True)
app.MainLoop()

4250

被折叠的 条评论
为什么被折叠?



