以像素为单位获取 tkinter 小部件大小
Get tkinter widget size in pixels
如果我使用参数 (width=10, height=1)
(以字符为单位)定义例如 tkinter.Button
小部件,然后我想检索它的大小(以像素为单位),我该怎么做?
编辑:
我尝试了 widget.winfo_height()
和 widget.geometry()
,但所有这些函数 return 高度都以字符数定义。我认为可以在一个框架中创建相同的小部件,然后编写 frame.winfo_height()
以像素为单位 return 大小,但这不是很好的解决方案。
好的,我明白了。我们必须先调用 widget.update()
,然后再调用 widget.winfo_height()
。
通常我按照上述步骤得到正确的尺寸,但这个例子的结果让我很困惑:
从 tkinter 导入 *
root=Tk()
labelName = Label(root, text='label')
entryName = Entry(root, foreground='red')
labelName.update_idletasks()
entryName.update_idletasks()
wl = labelName.winfo_width()
we = entryName.winfo_width()
print('wl, we: ', we, wl)
wl = labelName.winfo_reqwidth()
we = entryName.winfo_reqwidth()
print('wl, we: ', we, wl)
entryName.insert(0, 'entry.................sajdALSKJDASKDjsc')
labelName.grid(row=0, column=0)
entryName.grid(row=0, column=1)
mainloop()
输出 ???:
wl, 我们: 1 1
wl, 我们: 124 31
如果我使用参数 (width=10, height=1)
(以字符为单位)定义例如 tkinter.Button
小部件,然后我想检索它的大小(以像素为单位),我该怎么做?
编辑:
我尝试了 widget.winfo_height()
和 widget.geometry()
,但所有这些函数 return 高度都以字符数定义。我认为可以在一个框架中创建相同的小部件,然后编写 frame.winfo_height()
以像素为单位 return 大小,但这不是很好的解决方案。
好的,我明白了。我们必须先调用 widget.update()
,然后再调用 widget.winfo_height()
。
通常我按照上述步骤得到正确的尺寸,但这个例子的结果让我很困惑: 从 tkinter 导入 *
root=Tk()
labelName = Label(root, text='label')
entryName = Entry(root, foreground='red')
labelName.update_idletasks()
entryName.update_idletasks()
wl = labelName.winfo_width()
we = entryName.winfo_width()
print('wl, we: ', we, wl)
wl = labelName.winfo_reqwidth()
we = entryName.winfo_reqwidth()
print('wl, we: ', we, wl)
entryName.insert(0, 'entry.................sajdALSKJDASKDjsc')
labelName.grid(row=0, column=0)
entryName.grid(row=0, column=1)
mainloop()
输出 ???:
wl, 我们: 1 1
wl, 我们: 124 31