python图形界面GUI编程

1.概述

python中常用GUI的框架有Tkinter, pyqt, wxpython.
其中Tkinter适合微型图形界面的开发,
而pyqt, wxpython则适合中小型的图形界面开发。
其中PyQt可以直接使用Qt Designer生成界面,比较便利。
而wxpython需要用代码去控制界面的生成。
如果没有特殊需求,一般写GUI的话,这三个选择一个就可以。
下面仅给出wxpython的使用demo.

2.Demo

# coding=gbk

import wx
class myframe(wx.Frame):
   def __init__(self):
      #main window 
      wx.Frame.__init__(self,None,-1,"面板模板",size=(400,500),style=
      wx.MINIMIZE_BOX | wx.RESIZE_BORDER |
      wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX)
      panel=wx.Panel(self)

      
      # setup statictext 静态文本
      # setup checkbox statictext
      self.checkboxlabel=wx.StaticText(panel,-1,'checkbox',(50,20),(80,20))
      self.checkboxlabel.SetBackgroundColour("white")
      self.checkboxlabel.SetForegroundColour('red')
      #setup listbox statictext
      self.listboxlabel=wx.StaticText(panel,-1,'listbox',(50,110),(80,20))
      self.listboxlabel.SetBackgroundColour("white")
      self.listboxlabel.SetForegroundColour('red')
      #setup choice statictext
      self.choicelabel=wx.StaticText(panel,-1,'choice',(50,200),(80,20))
      self.choicelabel.SetBackgroundColour("white")
      self.choicelabel.SetForegroundColour('red')
      #setup slider statictext
      self.sliderlabel=wx.StaticText(panel,-1,'slider',(200,180),(80,20))
      self.sliderlabel.SetBackgroundColour("white")
      self.sliderlabel.SetForegroundColour('red')
      #setup ctrltext statictext
      self.ctrllabel=wx.StaticText(panel,-1,'textctrl',(200,240),(80,20))
      self.ctrllabel.SetBackgroundColour("white")
      self.ctrllabel.SetForegroundColour('red')

      # textctrl 动态文本
      self.text=wx.TextCtrl(panel,-1,"write",(200,260))
      self.text.SetInsertionPoint(0)

      # slider 滑块框
      self.slider=wx.Slider(panel,-1,20,1,100,pos=(200,200),size=(100,30))


      # setup choice 选择框
      mylist1=['xin','gui','meng','sing','boy','girl','guy']
      self.choice=wx.Choice(panel,-1,(50,220),choices=mylist1)
      self.choice.SetSelection(1)

      # setup listbox 列表框
      mylist=['xin','gui','meng','sing','boy','girl']
      self.listbox=wx.ListBox(panel,-1,(50,130),(80,60),mylist,wx.LB_SINGLE)
      self.listbox.SetSelection(1)
    

      # setup radiobox 单选框
      list1=["wang","shu","wan"]
      list2=["boy","girl"]
      self.radiobox1=wx.RadioBox(panel,-1,"radiobox",(200,20),wx.DefaultSize,
                  list1,3,wx.RA_SPECIFY_COLS)
      self.radiobox2=wx.RadioBox(panel,-1,"radiobox",(200,100),wx.DefaultSize,
                  list2,2,wx.RA_SPECIFY_ROWS)

      # setup checkbox 复选框
      self.check1=wx.CheckBox(panel,-1,"wang",(50,40),(150,20))
      self.check2=wx.CheckBox(panel,-1,"shu",(50,60),(150,20))
      self.check3=wx.CheckBox(panel,-1,"wan",(50,80),(150,20))

      # use button to creat ok and cancel option  按扭
      self.ok=wx.Button(panel,-1,"确定",pos=(50,400))
      self.cancel=wx.Button(panel,-1,"取消",pos=(250,400))
      self.Bind(wx.EVT_BUTTON,self.Onokclick,self.ok)
      self.Bind(wx.EVT_BUTTON,self.Oncancelclick,self.cancel)
   def Onokclick(self,event):
      print "check1", self.check1.GetValue()
      print "check2", self.check2.GetValue()
      print "check3", self.check3.GetValue()
      print "slider", self.slider.GetValue()
      print "textctrl", self.text.GetValue()
      print "choice", self.choice.GetStringSelection()
   def Oncancelclick(self,event):
      print "radiobox1",self.radiobox1.GetStringSelection()
      print "radiobox2",self.radiobox2.GetStringSelection()
      print "listbox",self.listbox.GetStringSelection()

if __name__=='__main__':
   app=wx.App()
   frame=myframe()
   frame.Show()
   app.MainLoop()

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342

推荐阅读更多精彩内容