第一个 wxPython 窗体应用程序

时间:2022-09-17 07:13:20

1、需求说明
创建一个主窗体
在窗体上放置一个菜单栏
在菜单栏中放置一个下拉菜单
在下拉菜单中放置一个菜单项
给菜单项绑定一个单击事件,在单击事件中打开文件选择对话框,获取选择文件名

2、代码

 1 import wx
 2 import fileinput
 3 
 4 class frmMain(wx.Frame):
 5     app = wx.App()
 6     menuBar = None
 7     fileMenu = None
 8     openMenuItem = None
 9     fileDialog = None
10 
11     def __init__(self, *args):
12         super(frmMain, self).__init__(*args)
13         self.menuBar = wx.MenuBar()
14         self.fileMenu = wx.Menu()
15         self.openMenuItem = wx.MenuItem(self.fileMenu, 1, '&Open..\tCtrl+O')
16         self.fileMenu.Append(self.openMenuItem)
17         self.menuBar.Append(self.fileMenu, title="File")
18         self.SetMenuBar(self.menuBar)
19         self.fileDialog = wx.FileDialog(self, "Open File", wildcard="files (*.html)|*.html", style=wx.FD_OPEN | wx.FD_FILE_MUST_EXIST)
20         self.Bind(wx.EVT_MENU, self.menu_Click)
21         self.SetSize((300,400))
22         self.Center()
23         self.Show()
24         self.app.MainLoop()
25 
26     def menu_Click(self, event):
27         if self.fileDialog.ShowModal() == wx.ID_CANCEL:
28             return
29         pathname = self.fileDialog.GetPath()
30         try:
31             with fileinput.input(pathname) as file:
32                 line = file.readline()
33                 print(line)
34         except IOError:
35             wx.LogError("Cannot open file '%s'." % pathname)

 

特别说明:
1、__init__必须增加一个参数*args,否则会报错;
2、__init__必须构造super中的__init__,否则在调用基类中的方法时会报错,因为没有实例化基类;