python的符号lt和gt怎么输入_lt;lt;Python基础教程gt;gt;学习笔记 | 第12章 | 图形用户界面...
Python支持的工具包非常多。但沒有一個被覺得標準的工具包。用戶選擇的自由度大些.本章主要介紹最成熟的跨平臺工具包wxPython.官方文檔:
------
豐富的平臺:
Tkinter實際上類似于標準,由于它被用于大多數正式的Python GUI程序。并且它是Windows二進制公布版的一部分。
可是在UNIX上要自己編譯安裝。
還有一個越來越受歡迎的工具是wxPython。
這是個成熟并且特性豐富的包,也是Python之父,Guido van Rossum的最愛
------
下載安裝wxPython
NOTE:
1. 注意選擇跟自己PC的二進制版本號相應的Python版本號
2. 下載wxPython后,強烈建議下載演示版本號(demo),演示樣例程序很具體
------
創建演示樣例GUI程序
最簡單的演示樣例程序例如以下:
>>> import wx ? ? ?#導入模塊
>>> app = wx.App() #初始化主要的引用程序類
>>> app.MainLoop() #wx中的包方法大寫開頭,與Python習慣相反
窗體和組件
窗體也稱為框架,它是wx.Frame類的實例。wx框架中的部件都是由它們的父部件作為構造函數的第一個參數創建的。假設正在創建的一個單獨的窗體,就不須要考慮父部件,使用None就可以。
并且在調用app.MainLoop前須要調用窗體的
Show方法--否則它會一直隱藏.
程序清單1:
import wx
app = wx.App()
win = wx.Frame(None)
win.Show()
app.MainLoop()
程序清單2: 在框架上加入button
#在框架上加入button也非常easy,僅僅要使用win作為父參數實例化wx.Button就可以.
import wx
app = wx.App()
win = wx.Frame(None)
btn = wx.Button(win)
win.Show()
app.MainLoop()
程序清單3: 使用keyword參數添加標簽和標題
import wx
app = wx.App()
win = wx.Frame(None,title="Simple Editor")
loadButton = wx.Button(win,label='Open')
saveButton = wx.Button(win,label='Save')
win.Show()
app.MainLoop()
看樣子丟了一個button,實際上隱藏了。假設要顯示出來,里面的post,size就得用上.
程序清單4: 設置button位置
import wx
app = wx.App()
win = wx.Frame(None,title="Simple Editor",size=(410,335))
win.Show()
#位置坐標,x與y的值
loadButton = wx.Button(win,label='Open',pos=(225,5),size=(80,25))
saveButton = wx.Button(win,label='Save',pos=(315,5),size=(80,25))
#文本框(wx.TextCtrl的對象),默認可編輯。無滾動欄
filename = wx.TextCtrl(win,pos=(5,5), size=(210,25))
contents = wx.TextCtrl(win,pos=(5,35),size=(390,260),style=wx.TE_MULTILINE | wx.HSCROLL)
#style參數,能夠使用按位或OR聯合wx模塊中具有特殊名字的風格來指定
#wx.TE_MULTILINE 垂直滾動欄
#wx.HSCROLL 水平滾動欄
app.MainLoop()
------
更智能的布局
在wx內進行布局的最簡單方法是使用尺寸器(sizer),最easy使用的工具是wx.BoxSizer。尺寸器會管理組件的尺寸。僅僅要將部件加入到尺寸器上,再加上一些布局參數。然后讓尺寸器自己去管理父組件的尺寸。在上面的樣例中,須要添加背景組件(wx.Panel)。創建一些嵌套的wx.BoxSizer,然后使用面板的SetSizer方法設定它的尺寸器。
程序清單5: 使用尺寸器
#代碼的執行效果和上例同樣,僅僅只是用相對坐標而不是絕對坐標
import wx
app = wx.App()
win = wx.Frame(None,title="Simple Editor",size=(410,335))
bkg = wx.Panel(win)
loadButton = wx.Button(bkg,label='Open')
saveButton = wx.Button(bkg,label='Save')
filename = wx.TextCtrl(bkg)
contents = wx.TextCtrl(bkg,style=wx.TE_MULTILINE | wx.HSCROLL)
#wx.BoxSizer兩個參數wx.HORIZONTAL(垂直),wx.VERTICAL(水平,默認)
#Add方法有幾個參數,proportion參數依據在窗體改變大小時所分配空間設置比例
#比如:水平的BoxSizer中,filename組件在改變大小時獲取所有的額外空間
#假設這3個部件都把proprotion設置為1,那么都會獲取相等的空間
#能夠講proportion設定為不論什么數
hbox = wx.BoxSizer()
hbox.Add(filename, proportion=1,flag=wx.EXPAND)
hbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5)
hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5)
#flag參數相似于style參數,能夠使用|或者OR連接構造符號常量對其進行構造
#wx.EXPAND標記確保組件會擴展到所有分配的空間中。而wx.LEFT,wx.RIGHT,wx.TOP,
#wx.BOTTOM和wx.ALL標記決定邊框參數應用于哪個邊。用于設置邊緣寬度
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)
vbox.Add(contents,proportion=1,
flag=wx.EXPAND | wx.LEFT | wx.BOTTOM |wx.RIGHT, border=5)
bkg.SetSizer(vbox)
win.Show()
app.MainLoop()布局已經好了,但點擊button后什么反應也沒有
------
完畢了的程序
剩下的工作,須要兩個處理函數:load和save。
當事件處理函數被調用時。事件對象event是唯一的參數
#文件名稱使用filename對象的GetValue方法獲取
#為了將文本引入文本區,僅僅要使用contents.SetValue就可以.
def load(event):
file = open(filename.GetValue())
contents.SetValue(file.read())
file.close()
#save函數差點兒和load一樣,除了它有個'w'屬性以及write方法.
#GetValue用于從文本區獲得信息
def save(event):
file = open(filename.GetValue(),'w')
file.write(contents.GetValue())
file.close()
程序清單6: 終于的程序
import wx
def load(event):
file = open(filename.GetValue())
contents.SetValue(file.read())
file.close()
def save(event):
file = open(filename.GetValue(),'w')
file.write(contents.GetValue())
file.close()
app = wx.App()
win = wx.Frame(None,title="Simple Editor",size=(410,335))
bkg = wx.Panel(win)
loadButton = wx.Button(bkg,label='Open')
loadButton.Bind(wx.EVT_BUTTON,load)
saveButton = wx.Button(bkg,label='Save')
saveButton.Bind(wx.EVT_BUTTON,save)
filename = wx.TextCtrl(bkg)
contents = wx.TextCtrl(bkg,style=wx.TE_MULTILINE | wx.HSCROLL)
hbox = wx.BoxSizer()
hbox.Add(filename, proportion=1,flag=wx.EXPAND)
hbox.Add(loadButton,proportion=0,flag=wx.LEFT,border=5)
hbox.Add(saveButton,proportion=0,flag=wx.LEFT,border=5)
vbox = wx.BoxSizer(wx.VERTICAL)
vbox.Add(hbox,proportion=0,flag=wx.EXPAND | wx.ALL,border=5)
vbox.Add(contents,proportion=1,
flag=wx.EXPAND|wx.LEFT|wx.BOTTOM|wx.RIGHT,border=5)
bkg.SetSizer(vbox)
win.Show()
app.MainLoop()
------
其它工具包
能夠看以下最簡單樣例,僅僅有一個窗體,帶有Hello標簽的button,點擊button時。它會打印文本"Hello,World!"
代碼例如以下:
import wx
def hello(event):
print "Hello,World!"
app = wx.App()
win = wx.Frame(None,title="Hello,wxPython!",size=(200,100))
button = wx.Button(win,label='Hello')
button.Bind(wx.EVT_BUTTON,hello)
win.Show()
app.MainLoop()------
使用Tkinter
Python自帶的,以下是使用Tkinter實現的GUI程序
from Tkinter import *
def hello():
print ('Hello,World!')
win = Tk()
win.title('Hello,Tkinter!')
win.geometry('200x100')
btn = Button(win,text='Hello',command=hello)
btn.pack(expand=YES,fill=BOTH)
mainloop()------
其它還能夠使用Jython和Swing
Jython: Python的Java實現,類似于wxPython和Tkinter這種包就不能用了。唯一可用的GUI工具包是Java標準庫包
中的AWT和Swing。
總結
以上是生活随笔為你收集整理的python的符号lt和gt怎么输入_lt;lt;Python基础教程gt;gt;学习笔记 | 第12章 | 图形用户界面...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql里concat什么意思_mys
- 下一篇: matlab读取pdb文件,使用BioP