如何在Tkinter中获取tk.Toplevel小部件的大小?

时间:2016-02-03 20:00:34

标签: python tkinter ttk

我正在使用 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,如果我明确指定高度宽度窗口几何图形将如下所示。

enter image description here

0 个答案:

没有答案