pythonGUI之GUI界面

2018/06/29 17:27
阅读数 53

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

 

以下为效果图:

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部