Python GUI 03----Button

來源:互聯網
上載者:User

標籤:python

1.一個簡單的Button應用
from tkinter import *#定義Button的回呼函數def helloButton():    print ('hello button')root = Tk()#通過command屬性來指定Button的回呼函數Button(root,text = 'Hello Button',command = helloButton).pack()root.mainloop()
2.測試Button的relief屬性運行下面的代碼可以看到Button的各個不同效果。
from tkinter import *root = Tk()#flat, groove, raised, ridge, solid, or sunkenButton(root,text = 'hello button',relief=FLAT).pack()Button(root,text = 'hello button',relief=GROOVE).pack()Button(root,text = 'hello button',relief=RAISED).pack()Button(root,text = 'hello button',relief=RIDGE).pack()Button(root,text = 'hello button',relief=SOLID).pack()Button(root,text = 'hello button',relief=SUNKEN).pack()root.mainloop()

3.與Label一樣,Button也可以同時顯示文本與映像,使用屬性compound
from tkinter import *root = Tk()#映像居下,居上,居右,居左,文字位於映像之上Button(root,text = 'botton',compound = 'bottom',bitmap = 'error').pack()Button(root,text = 'top',compound = 'top',bitmap = 'error').pack()Button(root,text = 'right',compound = 'right',bitmap = 'error').pack()Button(root,text = 'left',compound = 'left',bitmap = 'error').pack()Button(root,text = 'center',compound = 'center',bitmap = 'error').pack()root.mainloop()
4.控制項焦點問題建立三個Button,各自對應回呼函數;將第二個Button設定焦點,程式運行是按“Enter”,判斷程式的列印結果
from tkinter import *def cb1():    print ('button1 clicked')def cb2(event):    print ('button2 clicked')def cb3():    print ('button3 clicked')    root = Tk()b1 = Button(root,text = 'Button1',command = cb1)b2 = Button(root,text = 'Button2')b2.bind("<Return>",cb2)                            #Return事件相應斷行符號點擊。Enter事件響應的是mouseoverb3 = Button(root,text = 'Button3',command = cb3)b1.pack()b2.pack()b3.pack()b2.focus_set()                                     #將焦點定在按鈕b2上root.mainloop()
上例中使用了bind方法,它建立事件與回呼函數(響應函數)之間的關係,每當產生<Enter>事件後,程式便自動的調用cb2,與cb1,cb3不同的是,它本身還帶有一個參數----event,這個參數傳遞響應事件的資訊。
5.指定Button的寬度與高度width:    寬度
heigth:    高度
使用三種方式設定該屬性:
1.在建立Button對象時,指定寬度與高度
2.使用屬性width和height來指定寬度與高度
3.使用configure方法來指定寬度與高度

上述的三種方法同樣也適合其他的控制項

from tkinter import *root = Tk()b1 = Button(root,text = '30X1',width = 30,height = 2)b1.pack()b2 = Button(root,text = '30X2')b2['width'] = 30b2['height'] = 3b2.pack()b3 = Button(root,text = '30X3')b3.configure(width = 30,height = 3)b3.pack()root.mainloop()
6.設定Button文本在控制項上的顯示位置anchor:使用的值為:n(north),s(south),w(west),e(east)和ne,nw,se,sw,就是地圖上的標識位置了,使用width和height屬性是為了顯示各個屬性的不同。
from Tkinter import *root = Tk()#簡單就是美!for a in ['n','s','e','w','ne','nw','se','sw']:    Button(root,    text = 'anchor',    anchor = a,    width = 30,    height = 4).pack()

7.改變Button的前景色彩與背景色
from tkinter import *root = Tk()bfg = Button(root,text = 'change foreground',fg = 'red')bfg.pack()bbg = Button(root,text = 'change backgroud',bg = 'blue')bbg.pack()root.mainloop()


8.設定Button的邊框bd(bordwidth):預設為1或2個像素
# 建立5個Button邊框寬度依次為:0,2,4,6,8from tkinter import *root = Tk()for b in [0,1,2,3,4]:    Button(root,    text = str(b),    bd = b).pack()root.mainloop()    
9.設定Button狀態
from tkinter import *root = Tk()def statePrint():    print ('state')for r in ['normal','active','disabled']:    Button(root,    text = r,    state = r,    width = 30,    command = statePrint).pack()root.mainloop()
例子中將三個Button在回呼函數都設定為statePrint,運行程式只有normal和active啟用了回呼函數,而disable按鈕則沒有,對於暫時不需要按鈕起作用時,可以將它的state設定為disabled屬性

10.綁定Button與變數設定Button在textvariable屬性
from tkinter import *root = Tk()def changeText():    if b['text'] == 'text':        v.set('change')    else:        v.set('text')v = StringVar()b = Button(root,textvariable = v,command = changeText)v.set('text')b.pack()root.mainloop()
將變數v與Button綁定,當v值變化時,Button顯示的文本也隨之變化








如果有什麼疑問歡迎到我的公眾號提問~






Python GUI 03----Button

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.