我有一個頂級視窗,它的具體位置是通過幾何字串設定的。w.overrideredirect(True)被呼叫是因為頂級視窗不能有任何視窗管理器裝飾。在官方檔案中指出:
在設定此標志之前,請務必呼叫 .update_idletasks() 方法(請參閱第 26 節“通用小部件方法”(第 97 頁))。
所以這正是我所做的,但現在出現了視窗管理器裝飾。如果我不打電話,它作業正常w.update_idletasks()。
代碼:
w = tk.Toplevel(self.parent_frame)
w.geometry('48x240 1567 209')
w.update_idletasks()
w.overrideredirect(True)
我在 Ubuntu 20.04.3 LTS 上使用 Python 3.8.10 和 Tk 版本 8.6.10。
uj5u.com熱心網友回復:
那不是官方檔案,而且是錯誤的。恰恰相反:您必須在tkinter 有機會在螢屏上繪制視窗之前設定標志。這意味著 beforemainloop開始,并且在任何對updateor 的呼叫之前update_idletasks。
道理很簡單:設定overrideredirect只是設定一個標志。渲染視窗時,tkinter 將查看是否設定了標志,然后繪制視窗。如果未設定該標志,則會向視窗添加邊框。
在繪制視窗之后設定標志將不起作用,因為邊框已經繪制。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/323758.html
