近来为了帮助部门刚入职的实习生,同时也为了减少部分不必要重复工作量,使用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()
以下为效果图: