我正在尝试使用Label
创建ttk
。
我的目标是创建一个小部件的点出现的小部件。 我创建了一个条目,我想显示该单词值得的分数。
这是我的代码:
这是创建Label
:
def create_variabletext_label2(root, col, row, val):
val1 = IntVar()
val1.set(m.comptabilisation_points(val.get()))
# Here val is the value of the word input onto the entry widget
# and m.comptabilisation_point() is a function that counts the
# points of the word.
label = Label(root, textvariable=val1)
label.grid(column=col, row=row)
return val1, label
以下是创建条目的功能:
def create_entry_string(root, width, col, row, columnspan, rowspan):
val=StringVar()
entry=ttk.Entry(root, width=width, textvariable=val)
entry.grid(column=col, row=row, columnspan=columnspan, rowspan=rowspan)
return val, entry
然后我调用这些函数:
val_entry_mot, entry_mot = create_entry_string(root, 15, 1, 1, 1, 1)
val_points, label_points = create_variabletext_label2(root, 1, 2, val_entry_mot)
我的问题是Label
会一直显示0
。
标签不会根据单词的分数而改变。
感谢您的帮助。 MFF
抱歉模糊不清。
其他信息:
我正在尝试创建一个Scrabble游戏。实际上,我的问题是我不知道如何显示这个词的价值。即使条目的值发生变化,标签也不会改变。
起初我认为val_entry_mot
的价值并没有改变。所以我试图通过改变函数create_variable_text2()
来显示输入的单词:
def create_variabletext_label2(root, col, row, val):
label = Label(root, textvariable=val)
label.grid(column=col, row=row)
return val, label
有效。每次我在条目中更改单词时,标签都会显示单词。
然后,我认为应该计算单词的点的代码是有缺陷的。这是:
def comptabilisation_points(word):
dico_values=values_scrabble()
points=0
for i in word.upper():
points+=dico_values[i]
return points
values_scrabble()
是一个打开文件并将其转换为字典= {'A': 1, 'C': 3, 'B': 3, 'E': 1, 'D': 2, 'G': 2, 'F': 4, 'I': 1, 'H': 4, 'K': 10, 'J': 8, 'M': 2, 'L': 1, 'O': 1, 'N': 1, 'Q': 8, 'P': 3, 'S': 1, 'R': 1, 'U': 1, 'T': 1, 'W': 10, 'V': 4, 'Y': 10, 'X': 10, 'Z': 10}
当我试图计算一个单词的分数时,它确实有效。所以我想我的问题不在这里。
这是游戏的屏幕截图。这是法语,但你必须知道的是,顶部的第一个Entry
是你输入单词的地方,下面的正文应该显示单词的分数。
我希望我已经清楚了。谢谢。
MFF
答案 0 :(得分:0)
val_entry_mot
未设置并返回''
,这解释了您的问题:
In [1]: val_entry_mot.get()
Out[1]: ''
因此,val1.set()
无法正常运作。
如果直接将其设置为某个值,则代码可以正常工作,例如:
val1.set(123) # This properly renders "123" as Label text