天天看點

Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

Tkinter07_Message & Spinbox & PanedWindow & Toplevel

标簽(空格分隔): Tkinter

文章目錄

  • Tkinter07_Message & Spinbox & PanedWindow & Toplevel
      • Message 元件
      • Spinbox 元件
      • PanedWindow 元件
      • Toplevel 元件

Message 元件

Message(消息)元件是 Label 元件的變體,用于顯示多行文本消息。Message 元件能夠自動換行,并調整文本的尺寸使其适應給定的尺寸。

例 40

from tkinter import *

root = Tk()

w1 = Message(root, text="這是一則消息", width=100)
w1.pack()

w2 = Message(root, text="這是一則\n駭人聽聞的長長長長長消息", width=100)
w2.pack()

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

Spinbox 元件

Spinbox 元件(Tk8.4 新增)是 Entry 元件的變體,用于從一些固定的值中選取一個。Spinbox 元件和 Entry 元件用法相似,主要差別是使用 Spinbox 元件,可以通過範圍或者元組指定允許使用者輸入的内容。

例 41

from tkinter import *

root = Tk()
w = Spinbox(root, from_=0, to=10)
w.pack()

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

還可以通過元組指定允許輸入的值:

w = Spinbox(root, values=("小甲魚", "風介", "wei_Y", "戴宇軒"))
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

PanedWindow 元件

PanedWindow 元件(Tk8.4 新增)是一個空間管理元件。跟 Frame 元件類似,都是為元件提供一個架構,不過 PanedWindow 允許使用者調整應用程式的空間劃分。

例 42

建立一個兩窗格的 PanedWindow 元件。

from tkinter import *

m = PanedWindow(orient=VERTICAL)
m.pack(fill=BOTH, expand=1)
top = Label(m, text="top pane")
m.add(top)
bottom = Label(m, text="bottom pane")
m.add(bottom)

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

例 43

建立一個三窗格的 PanedWindow 元件。

from tkinter import *

m1 = PanedWindow()
m1.pack(fill=BOTH, expand=1)
left = Label(m1, text="left pane")
m1.add(left)
m2 = PanedWindow(orient=VERTICAL)
m1.add(m2)
top = Label(m2, text="top pane")
m2.add(top)
bottom = Label(m2, text="bottom pane")
m2.add(bottom)

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

這些不同窗格事實上有一條“分隔線”(sash)隔開。不妨把滑鼠緩慢移動到大概的位置,當滑鼠指針改變的時候拖動滑鼠,也可以把“分隔線”顯式地顯示出來,并且可以為它附上一個“搖桿”(handle):

例 44

from tkinter import *

m1 = PanedWindow(showhandle=True, sashrelief=SUNKEN)
m1.pack(fill=BOTH, expand=1)
left = Label(m1, text="left pane")
m1.add(left)
m2 = PanedWindow(orient=VERTICAL, showhandle=True, sashrelief=SUNKEN)
m1.add(m2)
top = Label(m2, text="top pane")
m2.add(top)
bottom = Label(m2, text="bottom pane")
m2.add(bottom)

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

Toplevel 元件

Toplevel(頂級視窗)元件類似于 Frame 元件,但 Toplevel 元件是一個獨立的頂級視窗,這種視窗通常擁有标題、邊框等部件。Toplevel 元件通常用在顯示額外的視窗、對話框和其他彈出視窗中。

例 45

在 root 視窗添加一個按鈕用于建立一個頂級視窗,點一下出現一個。

from tkinter import *

root = Tk()

def create():
    top = Toplevel()
    top.title("FishC Demo")

    msg = Message(top, text="I love FishC.com")
    msg.pack()

Button(root, text="建立頂級視窗", command=create).pack()

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

attributes() 方法用于設定和擷取視窗屬性,如果隻給出選項名,将傳回目前視窗該選項的值。注意:一下選項不支援關鍵字參數,需要在選項前添加橫杠(-)并用字元串的方式表示,用逗号(,)隔開選項和值。

例 46

将 Toplevel 視窗設定為 50% 透明。

from tkinter import *

root = Tk()

def create():
    top = Toplevel()
    top.attributes("-alpha", 0.5)
    top.title("FishC Demo")

    msg = Message(top, text="I love FishC.com")
    msg.pack()

Button(root, text="建立頂級視窗", command=create).pack()

mainloop()
           
Tkinter07_Message & Spinbox & PanedWindow & ToplevelTkinter07_Message & Spinbox & PanedWindow & Toplevel

摘自《零基礎入門學習Python》

參考連結:

An Introduction To Tkinter

Tkinter彙總

Python GUI程式設計(Tkinter)

Tkinter顔色方案舉例

python tkinter可以使用的顔色

tkinter學習-菜單與畫布

程式設計思想與方法–第五章

用Python中的tkinter子產品作圖

繼續閱讀