【问题标题】:python 3.6 Tkinter Label attribute error when using .grid使用.grid时python 3.6 Tkinter标签属性错误
【发布时间】:2018-01-20 17:50:48
【问题描述】:

我开始掌握 tkinter 的窍门,但我遇到了一个问题。我想创建一个标签,根据条目字段的值显示适当的消息,并通过按钮检查。当重复使用时,仅使用 tk.Label 命令只会覆盖在现有标签的顶部,所以我试图将标签分配给一个变量:

messagebox=tk.Label(root2,text="                       ",font(style,font).grid(row=1,column=0,columnspan = 50))

我想稍后使用 .configure 命令更改此文本,但是我收到此错误:

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\lib\tkinter\__init__.py", line 1699, in __call__
return self.func(*args)
File "C:[CENSORED BY POSTER (me), It was just the file directory]", line 84, in Checkpass
messagebox = tk.Label(root2,text="                       ",font=(style,font).grid(row=1,column=0,columnspan = 50))
AttributeError: 'tuple' object has no attribute 'grid'

谁能告诉我我做错了什么并解释为什么它不起作用。 谢谢, 塔瓦

【问题讨论】:

    标签: python tkinter


    【解决方案1】:

    font(style,font).grid 检查括号。大概应该是:

    messagebox=tk.Label(root2,text="                       ",font(style,font)).grid(row=1,column=0,columnspan = 50)
    

    但为了可读性,我个人建议分成两行:

    messagebox = tk.Label(root2, text="                       ", font(style, font))
    messagebox.grid(row=1, column=0, columnspan = 50)
    

    【讨论】:

    • 不仅是为了可读性,而且如果没有像那样分隔 messagebox 只会返回 None。我怀疑 OP 想要什么。
    • 非常感谢!另外,有人可以向我解释为什么它返回None吗?这只是 tkinter 的事情还是背后有真正的原因?
    • @Tava 因为您创建了一个小部件并在同一行调用.gridgrid() 方法返回 None,因此对小部件的引用不会存储在任何地方。因此,如果您需要将 ref 存储到小部件,请分别调用小部件创建和 grid(),如我的回答和 Nae 的链接中所示。
    猜你喜欢
    • 1970-01-01
    • 2017-12-05
    • 2021-07-24
    • 2015-11-20
    • 2018-08-28
    • 1970-01-01
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多