GUI的最終選擇 Tkinter(八):Message元件、Spinbox元件、PanedWindow元件、Toplevel元件
阿新 • • 發佈:2018-11-27
Message元件
Message(訊息)元件是Label元件的變體,用於顯示多行文字訊息,Message元件能夠自動執行,並調整文字的尺寸使其適應給定的尺寸。
1 from tkinter import * 2 3 root = Tk() 4 w1 = Message(root,text="這是一個訊息",width=100) 5 w1.pack() 6 w2 = Message(root,text="這是一個駭人聽聞的訊息,臺灣海峽發生了地震",width=200) 7 w2.pack() 8 mainloop()
執行結果:
Spinbox元件
Spinbox元件是Entry元件的變體,這是在Tk8.4版本中新增的一個元件,是從固定的值中選取一個。Spinbox元件和Entry元件在用法上非常的相似,主要的區別是Spinbox元件可以通過範圍或者元組指定允許使用者輸入的內容。
1 from tkinter import * 2 3 root = Tk() 4 w = Spinbox(root,from_=0,to=10) 5 w.pack() 6 mainloop()
執行結果:
下面是通過元組指定允許輸入的值。
1 from tkinter import * 2 3root = Tk() 4 w = Spinbox(root,values=("php","python","c+","java")) 5 w.pack() 6 mainloop()
執行結果:
PanedWindow元件
PanedWindow元件也是Tk8.4版本新增的一個空間管理元件,和Frame元件有點類似,都是為元件提供一個框架,不過PanedWindow允許讓使用者調整應用程式的空間劃分。
1 from tkinter import * 2 3 root = Tk() 4 m = PanedWindow(orient=VERTICAL)5 m.pack() 6 top = Label(m,text="TOP PANE") 7 m.add(top) 8 botton = Label(m,text="Botton pane") 9 m.add(botton) 10 mainloop()
執行結果:
在兩個Label之間有一個線,可以嘗試把滑鼠放上去,會有一個上下箭頭可以拉一下。
兩個窗格的建立好了,那麼三個窗格的就子通了:
1 from tkinter import * 2 3 root = Tk() 4 m1 = PanedWindow() 5 m1.pack(fill=BOTH,expand=1) 6 left = Label(m1,text="left pane") 7 m1.add(left) 8 m2 = PanedWindow(orient=VERTICAL) 9 m1.add(m2) 10 top = Label(m2,text="TOP PANE") 11 m2.add(top) 12 botton = Label(m2,text="Botton pane") 13 m2.add(botton) 14 mainloop()
執行結果:
Toplevel元件
Toplevel元件是一個獨立的頂級視窗元件有標題欄,邊框欄等部件。Toplevel元件通常用來顯示額外的對話窗或者彈出框。
來看個例子,使用root視窗新增一個按鈕,用於建立一個頂級視窗,點一下出現一個。
1 from tkinter import * 2 3 root = Tk() 4 def creat(): 5 top = Toplevel() 6 top.title("python") 7 msg = Message(top,text="I love python") 8 msg.pack() 9 Button(root,text="建立頂級視窗",command=creat).pack() 10 mainloop()
執行結果:
最後說下attributes()方法,它主要是用於設定或者獲取視窗屬性,如果只是給與選項名,將會返回當前視窗該選項的值。注意,下面的選項方式不支援關鍵字引數,需要在選項前面新增橫槓(-)並使用字串的方式,用逗號(,)隔開選項和值。
1 from tkinter import * 2 3 root = Tk() 4 def creat(): 5 top = Toplevel() 6 top.title("python") 7 top.attributes("-alpha",0.5) 8 msg = Message(top,text="I love python") 9 msg.pack() 10 Button(root,text="建立頂級視窗",command=creat).pack() 11 mainloop()
執行結果: