【问题标题】:I can't output my variable as a label in Tkinter我无法在 Tkinter 中将变量输出为标签
【发布时间】:2019-07-31 21:54:52
【问题描述】:

我想在 Tkinter 标签中放置一个变量,打印出变量“x”的值。

我尝试按照 Tkinter 文档中的示例进行操作,但它似乎仍然给我一个跟踪错误 'in second_click lblx2.place(window)'

x = max(numbers)
y = min(numbers)
z = sum(numbers)
a = float(z / len(numbers))


var_x = StringVar()
var_x.set(x)

lblx2 = Label(window, textvariable=var_x, font=('Arial Bold', 15), bg='blue', fg='red')

lblx2.place(window)

我希望它像普通文本一样将数字放在我的窗口上,但它不会打印任何内容。

完整的错误:

Exception in Tkinter callback
Traceback (most recent call last):
  File "REDACTED", line 1705, in __call__ return self.func(*args)
  File "REDACTED", line 49, in <lambda> btn['command'] = (lambda: second_click())
  File "REDACTED", line 102, in second_click lblx2.place(window)
  File "REDACTED", line 2188, in place_configure 
  File "REDACTED", line 1320, in _options cnf = _cnfmerge(cnf)
  File "REDACTED", line 104, in _cnfmerge for c in _flatten(cnfs):
TypeError: object of type 'Tk' has no len()

当我从原处移除(窗口)时,它会停止给出错误但仍然没有将数字放在窗口上

【问题讨论】:

  • 你能粘贴完整的错误吗?
  • 你为什么在place()中使用window?可能这会给您带来错误。
  • 请尝试创建minimal reproducible example
  • 如果你使用 place() 没有参数,那么它可能不知道在哪里放置标签。至少使用place(x=.., y=..) 或使用其他方式放置 - grid(), pack()
  • 不要像这样使用place()place() 有一些非常具体的用途,但大多数情况下您将使用 grid()pack() 来管理您的布局。就我个人而言,我喜欢使用grid() 来处理几乎所有事情。

标签: python tkinter label


【解决方案1】:

我认为错误在于 window 不是 Label 对象的合适参数。相反,它用于更改元素的位置。你也可以

  • 把它变成这样:lblx2.place(x=whatever,y=whatever)(注意:用位置替换任何东西)

  • 完全删除整行代码,因为它没有必要

【讨论】:

  • 如果我删除那行代码,我将如何输出标签本身?
  • @RoastedT 你会使用lblx2.pack()
【解决方案2】:

看不出问题。请提供一个完整的示例,而不仅仅是不能简单运行的代码片段。这是我的,它不会重现问题,而且真的没有比这更简单的了:

from tkinter import *
from random import random

x = random()

root = Tk()
var_x = StringVar()
var_x.set(x)
Label(root, textvariable=var_x).pack()
root.mainloop()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-22
    • 1970-01-01
    • 2019-05-05
    • 2021-09-13
    • 1970-01-01
    • 2019-01-16
    • 2022-07-29
    相关资源
    最近更新 更多