tkinter:查找小部件的可选参数

时间:2020-10-28 14:54:04

标签: python tkinter

因此,我创建了一个标签小部件,并为其指定了关键字参数'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()

2 个答案:

答案 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")