Toplevel(最上層視窗)組件類似於Frame組件,但Toplevel組件是一個獨立的最上層視窗,這種視窗通常擁有標題列、邊框等組件,和Tk()建立出來的根視窗是一樣的,共用著一樣的方法。
何時使用Toplevel組件。
Toplevel組件通常用在顯示額外的視窗、對話方塊或者其他快顯視窗上。
下面的例子,我們在root視窗添加一個按鈕用於建立一個最上層視窗,點一下來一個。
from tkinter import *root = Tk()def create(): top = Toplevel() top.title('Python') msg = Message(top, text='I love study') msg.pack()Button(root, text='建立最上層視窗', command=create).pack()mainloop()
Tk(根視窗)和Toplevel(最上層視窗)的方法:
下邊這一系列方法用於與視窗管理器進行互動。他們可以被Tk(根視窗)調用,同時也適用於Toplevel(最上層視窗)。
注意:並非所有作業系統均完全支援下方所有方法的實現。
aspect(minNumber=None, minDenom=None, maxNumber=None, maxDenom=None,)
--控制該視窗的寬高比(width:height)
--寬高比限制在:minNumber/minDenom~maxNumber/maxDenom
--如果忽略參數,則返回一個4元組表示當前的限制(如果有的話)
attribute(*args)
--設定和擷取視窗屬性
--如果你只給出選項名,將返回當前視窗該選項的值
--注意:以下選項不支援關鍵字參數,你需要在選項前加橫崗(-)並用字串的方式表示,用逗號(,)隔開選項和值。
--例如你希望設定視窗的透明度為50%,你應該使用attribute("-alpha", 0.5)代替attribute(alpha=0.5)
--下方列舉了args可以使用各個選項的具體含義和用法:
alpha:(Windows,Mac)控制視窗的透明度
1.0表示不透明,0.0表示完全透明
該選項並不支援所有的系統,對於不支援的系統,Tkinter繪製一個不透明(1.0)的視窗
disabled:(Windows)禁用整個視窗(這時候你只能從工作管理員中關閉它)
fullscreen:(Windows,Mac)如果設定為True,則全螢幕顯示視窗
modified:(Mac)如果設定為True,該視窗被標記為改動過
titlepath:(Mac)設定視窗代理表徵圖的路徑
toolwindow:(Windows)如果設定為True,該視窗採用工具視窗的樣式
topmost:(Windows,Mac)如果設定為True,該視窗將永遠置頂
client(name=None)
--設定和擷取WM_CLIENT_MACHINE屬性
--如果要刪除WM_CLIENT_MACHINE屬性,賦值為空白字串即可
--該屬性僅支援X視窗系統的視窗管理器,其他系統均忽略
colormapwindows(*wlist)
--設定和擷取WM_COLORMAP_WINDOWS屬性
--該屬性僅支援X視窗系統的視窗管理器,其他系統均忽略
command(value=None)
--設定和擷取WM_COMMAND屬性
--該屬性僅支援X視窗系統的視窗管理器,其他系統均忽略
deiconify()
--顯示視窗
--預設情況下新建立的視窗都會顯示在螢幕上,但是用iconify()或withdraw()方法可以在螢幕上移除視窗
focusmodel(model=None)
--設定和擷取焦點模式
frame()
--返回一個字串表示當前系統特徵
--對於類Unix系統,傳回值是X視窗標識符
--對於Windows系統,傳回值是HWND強制轉換為長整形的結果
geometry(geometry=None)
--設定和擷取視窗的尺寸
--geometry的參數格式為:"%dx%d%+d%+d"%(width, height, xoffset, yoffset)
(wm_)grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)
--通知視窗管理器該視窗將以網格的形式重新調整尺寸
--baseWidth和baseHeight指定Tk_GeometryRequest要求的網格單元數
--widthInc和heightInc指定單元的高度和寬度
(wm_)group(window=None)
--將視窗添加到視窗群中
--window參數指定控制視窗群的主視窗
--如果忽略該選項,將返回當前視窗群的主視窗
(wm_)iconbitmap(bitmap=None, default=None)
--設定和擷取視窗的表徵圖
--例如root.iconbitmap(bitmap="python.ico")
--default參數可以用於指定由該視窗建立的子視窗的預設表徵圖
(wm_)iconify()
--將視窗表徵圖化(最小化)
--需要重新顯示視窗,用deiconify()方法
--該方法會使得state()返回"iconic"
(wm_)iconmask(bitmap=None)
--設定和擷取位元影像編碼
(wm_)iconname(newName=None)
--設定和擷取當前視窗表徵圖化(最小化)時的表徵圖名字
(wm_)iconposition(x=None, y=None)
--設定和擷取當前視窗表徵圖化(最小化)時的表徵圖位置
(wm_)iconwindow(pathName=None)
--設定和擷取當前視窗表徵圖化(最小化)時的組件視窗
--該方法會使得state()返回“icon”
(wm_)maxsize(width=None, height=None)
--設定和擷取該視窗的最大尺寸
(wm_)minsize(width=None, height=None)
--設定和擷取該視窗的最小尺寸
(wm_)overrideredirect(boolean=None)
--如果參數為True,該視窗忽略所有的小組件(也就是說該視窗將沒有傳統的標題列、邊框等組件)
(wm_)positionfrom(who=None)
--指定視窗位置由“誰決定
--如果who參數是“user”,視窗位置由使用者決定
--如果who參數是“program”,視窗位置由系統決定
(wm_)protocol(name=None, func=None)
--將回呼函數func與相應的規則name綁定
--name參數可以是“WM_DELETE_WINDOW”:視窗被關閉的時候
--name參數可以是“WM_SAVE_YOURSELF”:視窗被儲存的時候
--name參數可以是“WM_TAKE_FOCUS”:視窗獲得焦點的時候
(wm_)resizable(width=None, height=None)
--指定是否可以改變該視窗的尺寸
--width為True說明允許調整視窗的水平尺寸
--height為True說明允許調整視窗的垂直尺寸
(wm_)sizefrom(who=None)
--指定視窗尺寸由“誰決定
--如果who參數是“user”,視窗尺寸由使用者決定
--如果who參數是“program”,視窗尺寸由系統決定
(wm_)state(newstate=None)
--設定和獲得當前視窗的狀態
--newstate的只可以是'normal', 'iconoc'(見iconify), 'withdraw'(見withdraw), 'icon'(見iconwindow)和'zoomed'(放大,Windows特有)
(wm_)title(string=None)
--設定視窗的標題
(wm_)transient(master=None)
--指定為master的臨時視窗
(wm_)withdraw()
--將視窗從螢幕上移除(並沒有銷毀)
--需要重新顯示視窗,使用deiconify()方法
--該方法會使得state()返回"withdraw"
wm_aspect(minNumber=None, minDenom=None, maxNumber=None, manDenom=None)
--見上方aspect()
wm_attributes(*args)
--見上方attributes()
wm_client(name=None)
--見上方client()
wm_colormapwindows(*wlist)
--見上方colormapwindows()
wm_command(value=None)
--見上方command()
wm_deiconify()
--見上方deiconify()
wm_focusmodel(model=None)
--見上方focusmodel()
wm_frame()
--見上方frame()
wm_geometry(geometry=None)
--見上方geometry()