tkinter之button


 

Button按鈕,直接上代碼:

from tkinter import *
def gs():
    global read
    s=Label(read,text='昨夜西風凋敝樹,堵上高樓,望盡天涯路!',background='yellow')
    s.pack()
def h():
    s_1=Label(read,text='痴心父母古來多,孝順兒孫誰見了?',background='red')
    s_1.pack()
read=Tk()#定義父窗口
b1=Button(read,command=gs,text='古詩導讀',width=20,height=2)#定義按鈕1
b2=Button(read,command=h,text='紅樓夢',width=20,height=2)#定義按鈕2
b1.pack()#顯示按鈕1
b2.pack()#顯示按鈕1
read.mainloop()
View Code

 Button按鈕用bind()方法綁定按鈕和函數:

from tkinter import *
read=Tk()#定義父窗口
def gs():
    #global read
    s=Label(read,text='昨夜西風凋敝樹,獨上高樓,望盡天涯路!',background='yellow')
    s.pack()
def h(event):#顯示一個標簽
    s_1=Label(read,text='痴心父母古來多,孝順兒孫誰見了?',background='red')#一個標簽
    s_1.pack()# 顯示
b1=Button(read,command=gs,text='古詩導讀',width=20,height=2)#定義按鈕1
#b2=Button(read,command=h,text='紅樓夢',width=20,height=2)#定義按鈕2
b2=Button(read,text='紅樓夢',width=20,height=2)#定義按鈕2
b2.bind('<Button-1>',h)#注意,在用bind()方法的時候,綁定的函數h需要加一個參
#數event,不然會報錯
b1.pack()#顯示按鈕1
b2.pack()#顯示按鈕1
read.mainloop()
View Code

 

***************pack布局*************

1.我們使用pack函數的時候,默認先使用的放到上面,然后 依次向下排,它會給我們的組件一個自認為合適的位置和大小,這是默認方式,也是我們上面一直采用的方式。

2. pack函數也可以接受幾個參數,side參數指定了它停靠在哪個方向,可以為LEFT,TOP,RIGHT,BOTTOM,分別代表左,上,右,下,它的fill參數可以是X,Y,BOTH和NONE,
即在水平方向填充,豎直方向填充,水平和豎直方向填充和不填充。
3.它的expand參數可以是YES和NO,它的anchor參數可以是N,E,S,W(這里的NESW分別表示北東南西,這里分別表示上右下左)以及他們的組合或者是CENTER(表示中間)。
4.它的ipadx表示的是內邊距的x方向,它的ipady表示的是內邊距的y方向,padx表示的是外邊距的x方向,pady表示的是外邊距的y方向。

from tkinter import *
root=Tk()
Button(root,text='A').pack(side=LEFT,expand=YES,fill=Y)
Button(root,text='B').pack(side=TOP,expand=YES,fill=BOTH)
Button(root,text='C').pack(side=RIGHT,expand=YES,fill=NONE,anchor=NE)
Button(root,text='D').pack(side=LEFT,expand=NO,fill=Y)
Button(root,text='E').pack(side=TOP,expand=NO,fill=BOTH)
Button(root,text='F').pack(side=BOTTOM,expand=YES)
Button(root,text='G').pack(anchor=SE)
root.mainloop()
View Code

 

**************grid布局*************
1.由於我們的程序大多數都是矩形,因此特別適合於網格布局,也就是grid布局。
2.使用grid布局的時候,我們使用grid函數,在里面指定兩個參數,用row表示行,用column表示列,其中值得注意的是row和column的編號都從0開始。
3.grid函數還有個sticky參數,它可以用N,E,S,W表示上右下左,它決定了這個組件是從哪個方向開始的,下面的例子可以很好的解釋這一點。
4.grid布局直接用后面的行和列的數字來指定了它位於哪個位置,而不必使用其他參數。
5.grid函數也支持諸如ipadx,ipady,padx,pady,它們的意思和pack函數是一樣的,默認邊距是0。
6.它還支持參數比如rowspan,表示跨越的行數,columnspan表示跨越的列數。
7.它還有一些屬性,可以在以后我們的demo中慢慢使用來看出其重要性。

from tkinter import *
root=Tk()
Label(root,text='賬號:').grid(row=0,sticky=W)
Entry(root).grid(row=0,column=1,sticky=E)
Label(root,text='密碼:').grid(row=1,sticky=W)
Entry(root).grid(row=1,column=1,sticky=E)
Button(root,text='登錄').grid(row=2,column=1,sticky=E)
root.mainloop()
View Code

用Label標簽模擬Button按鈕,實質是用bind()函數把Label標簽和其他函數綁定起來,看例子:

from tkinter import *
root=Tk()#父窗口類實例
def xianshi(event):#定義要給標簽,來模擬Button 按鈕
    x1=Label(root,text='篷山此去無多路,青鳥殷勤為探看。',background='red')
    x1.pack()
x2=Label(root,text='我就是來模擬Button的標簽大神!')
x2.bind('<Button-1>',xianshi)#拿這個標簽綁定xianshi()函數
x2.pack()
root.mainloop()
View Code

一個用戶名密碼登錄的小例子:

from tkinter import *
def reg():
    s1=E1.get()#獲取輸入框的內容
    s2=E2.get()#獲取輸入框的內容
    t1=len(s1)
    t2=len(s2)
    if s1=='111' and s2=='222': #輸入框s1的內容和輸入框s2的內容均輸正確的情況下
        c['text']='登錄成功!'#提示'登陸成功'
    else:
        c['text']='登錄失敗,用戶名或密碼錯誤!'
        E1.delete(0,t1)#否則,不但提示'登陸失敗',還要把輸入框內的字符串清除干凈
        E2.delete(0,t2)#否則,不但提示'登陸失敗',還要把輸入框內的字符串清除干凈
root=Tk()
l=Label(root,text='用戶名:')
l.grid(row=0,column=0,sticky=W)
E1=Entry(root)
E1.grid(row=0,column=1,sticky=E)

l2=Label(root,text='密碼')
l2.grid(row=1,column=0,sticky=W)
E2=Entry(root)
E2['show']='*' #輸入框(轉)-->密碼框,用輸入框的'show'屬性
E2.grid(row=1,column=1,sticky=E)

b=Button(root,text='登錄',command=reg,background='blue')
b.grid(row=2,column=1,sticky=E)

c=Label(root,text='')
c.grid(row=3)
root.mainloop()
View Code

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM