博主之前学习过python官方御用的tkinter,不过期间挺久了。今天来尝试一点新东西,wxpython。python
wxPython是一个用于Python编程语言的跨平台GUI工具包。它容许Python程序员简单轻松地建立具备强大,高功能的图形用户界面的程序。它被实现为一组Python扩展模块,它们包含流行的wxWidgets跨平台库的GUI组件,该 库是用C ++编写的。程序员
像Python和wxWidgets同样,wxPython是开源的,这意味着任何人均可以避免费使用它,而且任何人均可以查看和修改源代码。任何人均可觉得项目提供修复或加强功能。编程
wxPython是一个跨平台的工具包。因为编程语言是Python,所以wxPython程序简单, 易于编写且易于理解。app
import wx # 导入wx包 app = wx.App() # 建立一个应用程序对象 frm = wx.Frame(None, title="Hello World") # 建立一个界面 frm.Show() # 显示它 app.MainLoop() # 启动一个时间循环
运行结果:框架
import wx class HelloFrame(wx.Frame): # 一个说Hello World的框架 def __init__(self, *args, **kw): # 确保调用父类的__init__ super(HelloFrame, self).__init__(*args, **kw) pnl = wx.Panel(self) # 在框架中建立一个面板 st = wx.StaticText(pnl, label="Hello World!") # 放一些加粗字体在面板上 font = st.GetFont() font.PointSize += 10 font = font.Bold() st.SetFont(font) sizer = wx.BoxSizer(wx.VERTICAL) # 并建立一个sizer来管理子窗口小部件的布局 sizer.Add(st, wx.SizerFlags().Border(wx.TOP|wx.LEFT, 25)) pnl.SetSizer(sizer) self.makeMenuBar() # 建立一个菜单栏 self.CreateStatusBar() self.SetStatusText("Welcome to wxPython!") def makeMenuBar(self): """ 菜单栏由菜单组成,菜单由菜单项组成。 此方法构建一组菜单并绑定要调用的处理程序 选择菜单项时。 """ fileMenu = wx.Menu() # 使用Hello和Exit项建立一个文件菜单 # “\ t...”语法定义了一个也触发的加速键 # 同一事件 helloItem = fileMenu.Append(-1, "&Hello...\tCtrl-H", "Help string shown in status bar for this menu item") fileMenu.AppendSeparator() # 使用库存ID时,咱们不须要指定菜单项 # 标签 exitItem = fileMenu.Append(wx.ID_EXIT) # 如今是关于项目的帮助菜单 helpMenu = wx.Menu() aboutItem = helpMenu.Append(wx.ID_ABOUT) # 制做菜单栏并为其添加两个菜单。'&'定义 # 下一个字母是菜单项的“助记符”。在 # 支持它的平台那些字母加下划线而且能够 # 从键盘触发。 menuBar = wx.MenuBar() menuBar.Append(fileMenu, "&File") menuBar.Append(helpMenu, "&Help") # Give the menu bar to the frame self.SetMenuBar(menuBar) # 最后,将处理函数与EVT_MENU事件关联起来 # 每一个菜单项。这意味着当该菜单项是 # activated而后将调用相关的处理函数。 self.Bind(wx.EVT_MENU, self.OnHello, helloItem) self.Bind(wx.EVT_MENU, self.OnExit, exitItem) self.Bind(wx.EVT_MENU, self.OnAbout, aboutItem) def OnExit(self, event): """关闭框架""" self.Close(True) def OnHello(self, event): wx.MessageBox("Hello again from wxPython") def OnAbout(self, event): wx.MessageBox("This is a wxPython Hello World sample", "About Hello World 2", wx.OK|wx.ICON_INFORMATION) if __name__ == '__main__': # 运行此模块(未导入)而后建立应用程序, # frame,显示它,而后启动事件循环。 app = wx.App() frm = HelloFrame(None, title='Hello World 2') frm.Show() app.MainLoop()
运行结果:编程语言