因此,我创建了一个标签小部件,并为其指定了关键字参数'width'和'text'。我想使用带有命令'find_text'的按钮检索设置为这些参数的值,然后将这些值打包在屏幕中。您能否解释为什么winfo_width()返回的值与我为标签的width关键字设置的值不同?该值是像素的宽度吗?无论如何,如何获得分配的值(50)?另外,如何获得分配给该标签的文本?当然,我使用的方法并不存在,但是只是为了展示我想要的东西。
from tkinter import *
def find_text():
widthlabel = Label(root, text=label.winfo_width())
widthlabel.pack()
textlabel = Label(root, text=label.winfo_text())
textlabel.pack()
root = Tk()
root.geometry("500x500")
root.configure(bg="black")
label = Label(root, width=50, text="hello")
label.pack()
button = Button(root, text="find_text_button", command=find_text)
button.pack()
root.mainloop()
答案 0 :(得分:1)
我有2种方法。
cget()
方法:def find_text():
widthlabel = Label(root, text=label.cget('width')) #get the value of option width
widthlabel.pack()
textlabel = Label(root, text=label.cget('text')) #get the value of option text
textlabel.pack()
def find_text():
widthlabel = Label(root, text=label['width']) #returns the width value given
widthlabel.pack()
textlabel = Label(root, text=label['text']) #returns the text value given
textlabel.pack()
答案 1 :(得分:1)
您能解释一下为什么winfo_width()返回的值与我为标签的width关键字设置的值不同吗?
winfo_width()
返回实际宽度。实际宽度受是否可见以及几何图形管理器选项的影响(例如:几何图形管理器可能会根据其配置的大小缩小或增大它的大小)。如果tkinter没有机会更新显示,或者您尚未将小部件添加到显示,则实际宽度将为零。
简而言之,实际宽度不一定是配置的宽度。
如果要配置 事件,请使用cget
,例如label.cget("width")
。