下邊這一系列方法用於與窗口管理器進行交互。他們可以被 Tk(根窗口)進行調用,同樣也適用於 Toplevel(頂級窗口)。
注:並非所有操作系統均完全支持下方所有方法的實現。
aspect(minNumer=None, minDenom=None, maxNumer=None, maxDenom=None)
-- 控制該窗口的寬高比(width:height)
-- 寬高比限制在:minNumer / minDenom ~ maxNumer / maxDenom
-- 如果忽略參數,則返回一個 4 元組表示當前的限制(如果有的話)
attributes(*args)
-- 設置和獲取窗口屬性
-- 如果你只給出選項名,將返回當前窗口該選項的值
-- 注意:以下選項不支持關鍵字參數,你需要在選項前添加橫杠(-)並用字符串的方式表示,用逗號(,)隔開選項和值。
-- 例如你希望設置窗口的透明度為 50%,你應該使用 attribute("-alpha", 0.5) 代替 attribute(alpha=0.5)
-- 下方表格列舉了 args 可以使用各個選項的具體含義及用法:
選項 含義
alpha 1.(Windows,Mac)控制窗口的透明度
2. 1.0 表示不透明,0.0 表示完全透明
3. 該選項並不支持所有的系統,對於不支持的系統,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)
grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)
-- 通知窗口管理器該窗口將以網格的形式重新調整尺寸
-- baseWidth 和 baseHeight 指定 Tk_GeometryRequest 要求的網格單元數
-- widthInc 和 heightInc 指定網格單元的寬度和高度(像素)
group(window=None)
-- 將窗口添加到窗口群中
-- window 參數指定控制窗口群的主窗口
-- 如果忽略該參數,將返回當前窗口群的主窗口
iconbitmap(bitmap=None, default=None)
-- 設置和獲取窗口的圖標
-- 例如 root.iconbitmap(bitmap="Python.ico")
-- default 參數可以用於指定由該窗口創建的子窗口的默認圖標
iconify()
-- 將窗口圖標化(最小化)
-- 需要重新顯示窗口,使用 deiconify() 方法
-- 該方法會使得 state() 返回 "iconic"
iconmask(bitmap=None)
-- 設置和獲取位圖掩碼
iconname(newName=None)
-- 設置和獲取當窗口圖標化(最小化)時的圖標名字
iconposition(x=None, y=None)
-- 設置和獲取當窗口圖標化(最小化)時的圖標位置
iconwindow(pathName=None)
-- 設置和獲取當窗口圖標化(最小化)時的組件窗口
-- 該方法會使得 state() 返回 "icon"
maxsize(width=None, height=None)
-- 設置和獲取該窗口的最大尺寸
minsize(width=None, height=None)
-- 設置和獲取該窗口的最小尺寸
overrideredirect(boolean=None)
-- 如果參數為 True,該窗口忽略所有的小部件(也就是說該窗口將沒有傳統的標題欄、邊框等部件)
positionfrom(who=None)
-- 指定窗口位置由“誰”決定
-- 如果 who 參數是 "user",窗口位置由用戶決定
-- 如果 who 參數是 "program",窗口位置由系統決定
protocol(name=None, func=None)
-- 將回調函數 func 與相應的規則 name 綁定
-- name 參數可以是 "WM_DELETE_WINDOW":窗口被關閉的時候
-- name 參數可以是 "WM_SAVE_YOURSELF":窗口被保存的時候
-- name 參數可以是 "WM_TAKE_FOCUS":窗口獲得焦點的時候
resizable(width=None, height=None)
-- 指定是否可以改變該窗口的尺寸
-- width 為 True 說明允許調整窗口的水平尺寸
-- height 為 True 說明允許調整窗口的垂直尺寸
sizefrom(who=None)
-- 指定窗口尺寸由“誰”決定
-- 如果 who 參數是 "user",窗口位置由用戶決定
-- 如果 who 參數是 "program",窗口位置由系統決定
state(newstate=None)
-- 設置和獲得當前窗口的狀態
-- newstate 的值可以是 "normal","iconic"(見 iconify),"withdrawn"(見 withdraw),"icon"(見 iconwindow)和 "zoomed"(放大,Windows 特有)
title(string=None)
-- 設置窗口的標題
transient(master=None)
-- 指定為 master 的臨時窗口
withdraw()
-- 將窗口從屏幕上移除(並沒有銷毀)
-- 需要重新顯示窗口,使用 deiconify() 方法
-- 該方法會使得 state() 返回 "withdrawn"
wm_aspect(minNumer=None, minDenom=None, maxNumer=None, maxDenom=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()
wm_grid(baseWidth=None, baseHeight=None, widthInc=None, heightInc=None)
-- 見上方 grid()
wm_group(window=None)
-- 見上方 group()
wm_iconbitmap(bitmap=None, default=None)
-- 見上方 iconbitmap()
wm_iconify()
-- 見上方 iconify()
wm_iconmask(bitmap=None)
-- 見上方 iconmask()
wm_iconname(newName=None)
-- 見上方 iconname()
wm_iconposition(x=None, y=None)
-- 見上方 iconposition()
wm_iconwindow(pathName=None)
-- 見上方 iconwindow()
wm_maxsize(width=None, height=None)
-- 見上方 maxsize()
wm_minsize(width=None, height=None)
-- 見上方 minsize()
wm_overrideredirect(boolean=None)
-- 見上方 overrideredirect()
wm_positionfrom(who=None)
-- 見上方 positionfrom()
wm_protocol(name=None, func=None)
-- 見上方 protocol()
wm_resizable(width=None, height=None)
-- 見上方 resizable()
wm_sizefrom(who=None)
-- 見上方 sizefrom()
wm_state(newstate=None)
-- 見上方 state()
wm_title(string=None)
-- 見上方 title()
wm_transient(master=None)
-- 見上方 transient()
wm_withdraw()
-- 見上方 withdraw()

import tkinter as tk import time # window = tk.Tk() # window.title('my window') # ##窗口尺寸 # window.geometry('200x200') # # # 將窗口從屏幕上移除(並沒有銷毀) # # 需要重新顯示窗口,使用 deiconify() 方法 # #window.withdraw() # # #該窗口忽略所有的小部件 # window.overrideredirect(boolean=True) # # window.positionfrom(who='user') # # window.mainloop() #根窗口全屏並且半透明,以及頂級窗口半透明 root = tk.Tk() root.attributes("-alpha", 0.5, "-fullscreen", True) def create(): top = tk.Toplevel() top.title('Python') top.attributes("-alpha", 0.5) msg = tk.Message(top, text='I love study') msg.pack() tk.Button(root, text='創建頂級窗口', command=create).pack() root.mainloop()
————————————————
版權聲明:本文為CSDN博主「來自江南的你」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_41556318/article/details/85598325