【发布时间】:2020-07-28 18:26:32
【问题描述】:
这是我第一次使用 tkinter,请原谅我,因为我觉得这是一个非常愚蠢的问题,但我找不到答案。我做了一个简单的骰子滚轮,看起来像这样:
screenshot 忽略好人/坏人的事情......只是给出一个有趣的愚蠢信息。
它有效,但是如果我用一个值填充任何输入框,其余的会自动填充相同的值。我不希望这样,我希望他们是独立的。
这是用于创建输入框的代码:
#D4 STUFF
#CREATE ENTRY BOX
self.entryD4 = ttk.Entry(self.rollButtonFrame,
width=self.entryWidth,
textvariable = '0')
self.entryD4.grid(row=self.rollRowStart,column=self.entryCol)
#CREATE BUTTONS
self.d4Button = ttk.Button(self.rollButtonFrame, text = self.d4entryText,
command = self.rollD4)
self.d4Button.grid(row=self.rollRowStart,column=self.rollCol)
#CREATE LABELS FOR ANSWERS
self.d4label = ttk.Label(self.rollButtonFrame, text = 'Total: 0')
self.d4label.grid(row=self.rollRowStart,column=self.answerCol)
#CREATE LABELS FOR DESCRIPTIONS
descText = 'Number of '+self.diceNames[0]+' dice: '
d4desc = ttk.Label(self.rollButtonFrame, text = descText)
d4desc.grid(row=self.rollRowStart,column=self.descCol)
这只是对 D6、D8 等重复。我知道这是非常低效的,但我强制它先学习,然后再重写高效的代码。
有人知道为什么它会自动填充吗?我好像搞不懂。
编辑: 我发现它是因为 textvariable 参数。但是,如果我删除它,我不会得到“默认文本”,并且在尝试在没有值的情况下进行计算时会引发错误。有没有办法在避免问题的同时插入默认值?
【问题讨论】:
-
如果您使用条目的
textvariable=选项(这里实际上并不需要),它必须是 Tkinter Var 类型之一 - 例如StringVar或IntVar。您将所有条目设置为相同的变量名称,因此它们都必然显示相同的内容。 -
你认为
textvariable = '0'在做什么?它是无效的,并且不清楚你想用它来完成什么。 -
它被用来添加“0”作为默认值,而不是将条目留空。虽然我认为可能有更好的方法来做到这一点
标签: python python-3.x user-interface tkinter tkinter-entry