近來為了幫助部門剛入職的實習生,同時也為了減少部分不必要重復工作量,使用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()
以下為效果圖:

