近来为了帮助部门刚入职的实习生,同时也为了减少部分不必要重复工作量,使用python的自带模块tkinter和第三方库wxpython做了一个简单的工作常用固化软件。
简单说说两者的区别
- 自带模块tkinter:如果是初学者,该模块可帮你快速掌握GUI界面布局,适合做一些简单易操作的界面,但是该模块自定义布局较差,而且做出来外观极其不美观,如果要是想做一个好点的界面软件,建议使用wxpython。
- 第三方库wxpython:该库界面布局较为美观,而且各容器也很完善,最重要的是使用也很简单,如果想做的精美一点,首选。
简单分享一个wxpython案例,详细可参考另一篇关于wxpython库详解的随笔:
1 import wx
2
3 class Frame(wx.Frame):
4 def __init__(self):
5 wx.Frame.__init__(self, None,title='案例',pos=(200, 200),size=(700,500),style = wx.DEFAULT_FRAME_STYLE| wx.TRANSPARENT_WINDOW)
6 #添加菜单
7 self.CreateStatusBar()# A Statusbar in the bottom of the window
8 self.menubar = wx.MenuBar()
9 self.filemenu = ['filemenu2']
10 self.id = [wx.ID_EXIT]
11 self.id_name = ['退出']
12 self.id_desc = ['退出程序']
13 self.bind = [self.tkquit]
14 for i in range(1):
15 self.filemenu[i] = wx.Menu()
16 self.filemenu[i].Append(self.id[i], self.id_name[i], self.id_desc[i])
17 self.menubar.Append(self.filemenu[i], self.id_name[i]) # Adding the "filemenu" to the MenuBar
18 self.filemenu[i].Bind(wx.EVT_MENU, self.bind[i])
19 self.SetMenuBar(self.menubar)
20 # 背景设置
21 self.panel = wx.Panel(self)
22 self.panel.Bind(wx.EVT_ERASE_BACKGROUND, self.OnEraseBack)
23
24 # 按钮设置
25 self.btn1 = wx.Button(self.panel, label="退出", pos=(300, 200), size=(120, 30))
26 self.btn1.Bind(wx.EVT_BUTTON,self.tkquit)
27
28 # 设置窗口标题的图标
29 self.icon = wx.Icon('photo/ico1.ico', wx.BITMAP_TYPE_ICO)
30 self.SetIcon(self.icon)
31
32 def tkquit(self, event):
33 a = wx.MessageDialog(parent=None,message='确定退出吗?',caption='退出',style=wx.YES_NO|wx.ICON_AUTH_NEEDED)
34 if a.ShowModal()==wx.ID_YES:
35 self.Close()
36
37 def OnEraseBack(self, event):
38 dc = event.GetDC()
39 if not dc:
40 dc = wx.ClientDC(self)
41 rect = self.GetUpdateRegion().GetBox()
42 dc.SetClippingRect(rect)
43 dc.Clear()
44 bmp = wx.Bitmap('photo/bj.jpg')
45 dc.DrawBitmap(bmp, 0, 0)
46
47 def main():
48 frame = Frame()
49 frame.Show()
50
51 if __name__ == '__main__':
52 app = wx.App(False)
53 main()
54 app.MainLoop()
以下为效果图:
来源:oschina
链接:https://my.oschina.net/u/4387108/blog/3921635