頂層視窗部件的建立及其選項
可單獨存在的頂層視窗, 具有獨立的視窗管理器, 可以獨立移動和調整大小, 應用程式可以使用任意數量的頂級視窗. 任可部件都可以使用 winfo_toplevel() 方法返回其頂層視窗部件.
top_level = tk.Toplevel(option, ...)
選項 |
說明 |
bg or background |
背景色 |
bd or borderwidth |
外框寛度, 內定為 0 |
class_ |
分類名 |
cursor |
當滑鼠移到部件處時,所顯示的滑鼠圖示 |
height |
視窗高度 |
highlightbackground |
非聚焦時的聚焦顏色 |
highlightcolor |
聚焦時的聚焦顏色 |
highlightthickness |
聚焦厚度, 內定 1, 0 則無 |
menu |
選單部件 |
padx |
部件左右間隔, 內定為 0 點素 |
pady |
部件上下間隔, 內定為 0 點素 |
relief |
外框花樣 |
takefocus |
一般來說, 視窗不會聚焦, 設 True 可聚焦 |
width |
視窗寛度 |
頂層視窗部件的方法
方法 |
說明 |
aspect(nmin, dmin, nmax, dmax) |
限制視窗寛度與長度的比例 [nmin/dmin, nmax/dmax] |
deiconify() |
還原圖示化的視窗 |
geometry(newGeometry=None) |
設定或還原視窗的大小及位置字串 |
iconify() |
圖示化視窗 |
lift(aboveThis=None) |
上移視窗到最頂層或某一視窗上一層 |
lower(belowThis=None) |
下移視窗到最底層或某一視窗下一層 |
maxsize(width=None, height=None) |
設定或返回視窗最大尺寸 |
minsize(width=None, height=None) |
設定或返回視窗最小尺寸 |
overrideredirect(flag=None) |
設定重寫重定向標誌(override redirect) 為True, 視窗上方的視窗管理器會被移除, 因此視窗管理就不能移動, 改變大小, 圖示化, 關閉視窗. 設定為False 就可以還原; 無引數則返回目前的設定值. 在設定該引數時, 要記得先呼叫update_idletasks() 方法; 如果在進入mainloop() 之前呼叫它,則視窗將在顯示之前被禁用; 在某些Unix 及MacOS 平臺可能不適用 |
resizable(width=None, height=None) |
設定視窗的尺寸可否調整, 或返回視窗可否調整尺寸的 2-tuple 值 |
state(newstate=None) |
設定或返回目前視窗的狀態, ‘normal’/‘iconic’/‘withdraw’ |
title(text=None) |
設定或返回視窗的標題 |
transient(parent=None) |
設定該視窗作為某父視窗的過渡視窗, 內定為該視窗的父視窗. 過渡視窗會在其父視窗之前, 如果父視窗被圖示化, 則它也會被圖示化 |
withdraw() |
隱藏視窗, 可以 deiconify() 或 iconify() 方法來還原 |
範例視窗及程式碼
import tkinter as tk
def win(text, width, height):
top_level = tk.Toplevel()
top_level.title(f'{width}x{height}')
label = tk.Label(
top_level, text=text, width=width, height=height,
wraplength=width*8, anchor=tk.NW, justify=tk.LEFT, borderwidth=5,
relief=tk.SOLID)
label.grid(row=0, column=0)
return top_level, label
root = tk.Tk()
root.wm_title("Toplevel Demo")
font = ('Courier New', 16, 'bold')
t = ('This tutorial introduces the reader informally to the basic '
'concepts and features of the Python language and system. It '
'helps to have a Python interpreter handy for hands-on experience'
', but all examples are self-contained, so the tutorial can be '
'read off-line as well.')
win1, label1 = win(t, 100, 20)
win2, label2 = win(t, 80, 25)
win3, label3 = win(t, 60, 35)
win4, label4 = win(t, 50, 40)
root.mainloop()
本作品採用《CC 協議》,轉載必須註明作者和本文連結