Python 获取tkinter小部件大小(以像素为单位)

Python 获取tkinter小部件大小(以像素为单位),python,tkinter,size,pixels,Python,Tkinter,Size,Pixels,例如,如果我使用参数(宽度=10,高度=1)(字符)定义tkinter.Button小部件,然后我想以像素为单位检索它的大小,我该怎么做 编辑: 我尝试了widget.winfo_height()和widget.geometry(),但所有这些函数都返回以字符数定义的高度。我认为可以在一个框架中创建相同的小部件,然后编写frame.winfo_height(),它将返回以像素为单位的大小,但这不是一个很好的解决方案。好的,我找到了答案。在调用widget.winfo_height()之前,我们必

例如,如果我使用参数
(宽度=10,高度=1)
(字符)定义
tkinter.Button
小部件,然后我想以像素为单位检索它的大小,我该怎么做

编辑:
我尝试了
widget.winfo_height()
widget.geometry()
,但所有这些函数都返回以字符数定义的高度。我认为可以在一个框架中创建相同的小部件,然后编写
frame.winfo_height()
,它将返回以像素为单位的大小,但这不是一个很好的解决方案。

好的,我找到了答案。在调用
widget.winfo_height()
之前,我们必须先调用
widget.update()
,通常,在执行上述步骤时,我会得到正确的大小,但这个示例的结果确实让我感到困惑: 从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,we:11

wl,we:124 31

在提出这样一个基本问题之前,你应该做一些研究。这个网站上有很多关于小部件和窗口的宽度和高度的问题。但是这些问题与像素大小无关。
winfou高度
winfou宽度
将始终返回像素数。如果你认为不是,请提供答案。布莱恩,这似乎不公平。如果在创建小部件时调用widget.winfo_height(),则只会得到“1”。但是,如果ypu首先调用widget.update(),它会给出正确的答案。请注意,使用.winfo_width()只会得到1,使用.winfo_width()只会得到1,而.winfo_reqwidth()会给出正确的答案(wl,我们顺序切换),而不需要进行w.update()