我正在使用 Tkinter 创建一个弹出窗口。
def show_warning(self, msg):
self.warning = tk.Toplevel()
self.centrify_widget(self.warning)
self.warning.title('Warning!')
self.warn.resizable(0, 0)
self.warnFr = ttk.Frame(self.warning, borderwidth=2, relief='groove')
self.warnFr.grid()
ttk.Label(self.warnFr, font='TkDefaultFont 11', text=msg).grid()
ttk.Button(self.warnFr, text='OK', command=self.warning.destroy).grid()
我希望此弹出窗口根据应用程序位置显示 centrified 。
def centrify_widget(self, widget):
rwidth = self.winfo_screenwidth()
rheight = self.winfo_screenheight()
x, y = (rwidth/2) - (widget.width/2), (rheight/2) - (widget.height/2)
widget.geometry('%dx%d+%d+%d' % (widget.width, widget.height, x, y))
上述代码无法正常运行,因为tk.Toplevel
没有 width 或 height 属性。
那么,当我不知道高度和宽度时,如何 centrify 弹出窗口?
我无法对其进行硬编码,因为我的show_warning
函数会接受不同长度的msg
,如果我明确指定高度和宽度窗口几何图形将如下所示。