1. 程式人生 > >GUI的最終選擇 Tkinter(八):Message元件、Spinbox元件、PanedWindow元件、Toplevel元件

GUI的最終選擇 Tkinter(八):Message元件、Spinbox元件、PanedWindow元件、Toplevel元件

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 
3
root = 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()

執行結果: