【问题标题】:Certain label wont work with .grid() function from tkinter某些标签不适用于 tkinter 的 .grid() 函数
【发布时间】:2018-08-20 15:33:28
【问题描述】:

看来我把我的问题解释得很糟糕,但是我标签上的网格功能有问题。标签确实显示了,但是我无法更改它的行/列或在括号内执行任何功能。

我把如何复制问题的代码放在那里。将任何内容放在 .grid() 括号内不会像前面所说的那样做任何事情

from tkinter import *
root = Tk()

#To actually see that it does not work
root.geometry("800x600")

Var = StringVar()

Label = Label(root, textvariable=Var)

#Location of problem, adding stuff into the brackets does not change anything. For example: sticky = "ne"
Label.grid()

Var.set("Ha")

root.mainloop()

【问题讨论】:

  • “行不通”是什么意思?请在问题中包含minimal reproducible example。此处强烈建议不要链接到其他网站上的代码。
  • 您的代码对我来说似乎工作正常。我看到一个带有字符串“Ha”的标签。
  • 您能否更具体地说明您要做什么。另外,您是否搜索过其他问题?您是否知道默认情况下,行和列的宽度和高度只有容纳其内容所需的宽度和高度,而空的行和列的大小为零?

标签: python tkinter tkinter-canvas tkinter-layout


【解决方案1】:

要让标签显示在右侧,您可以指定网格中的列数,然后将标签放在最后一列。例如,尝试在您的“#Location of problem”评论之后添加它:

cols = 0
while cols < 4:
    root.columnconfigure(cols, weight=1)
    cols += 1
Label.grid(column=3)

【讨论】:

  • 我对 tkinter 很陌生,还没有看到使用中的“columnconfigure”命令。该循环如何指定列数?是否可以做同样的事情来制作行?最后,为什么 .grid() 方法不能与使用 StringVar 的标签一起使用?
  • 这一切都取决于你想做什么。如果您知道您将拥有某种网格模式(行 x 列),那么您可以像上面那样(包括类似方式的行)来布置它。如果您只想要一个指定的标签单元格宽度和该单元格中的标签位置,您可以执行以下操作:label1 = Label(root, textvariable=Var, width=100, anchor=E) 后跟 label1.grid()
猜你喜欢
  • 1970-01-01
  • 2015-10-28
  • 2020-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-10
  • 1970-01-01
  • 2015-08-21
相关资源
最近更新 更多