我有一个Tkinter根窗口和一个tk.Toplevel。当我在根窗口和Toplevel上调用.wm_geometry()
时,即使我的窗口在屏幕上可见,它们也会返回字符串1x1+0+0
。
我的代码的一个非常非常非常简洁的版本是:
root = tk.Tk()
root.withdraw()
window = tk.Toplevel(root)
window.withdraw()
# add things to this window
root.after(0, execute_next_instruction)
root.mainloop()
def execute_next_instruction():
# executes instructions written in another language,
# which I am implementing using Python
# one of the calls to this function calls window.deiconify()
# a subsequent call then calls window.wm_geometry(), which returns "1x1+0+0"
# execute instruction
if still_have_more_instructions():
root.after(0, execute_next_instruction)
答案 0 :(得分:1)
事实证明,因为我使用的是tk.Tk.after(0, execute_next_instruction)
,所以在窗口准备好之前,仍然会执行获取窗口几何信息的调用。修复方法是使用tk.Tk.after(1, execute_next_instruction)
。
答案 1 :(得分:0)
使用wm_geometry()
传递位置。当没有参数调用时,它返回当前几何(宽x高+ x位+ y位置)。您也可以在窗口实例上调用它。例如:
root = tk.Tk()
root.wm_geometry("800x600+0+0")
# ... other stuff ...
root.mainloop()