【问题标题】:getting empty input from tkinter text从 tkinter 文本中获取空输入
【发布时间】:2017-04-23 05:19:42
【问题描述】:

我已经在这个座位表上工作了大约 2 到 3 个小时,结果我陷入了困境。当我在文本中输入一个名称、收集输入并将其分配给一个变量时,它会给我一个看起来像这样的输入

['']

我在这个问题上找不到任何东西,我想使用Text() 而不是Entry(),因为Entry() 没有高度属性。如果你能给我任何关于如何解决这个问题的提示或提示,或者对我的代码有任何其他提示,请随时告诉我如何让我的代码更好:)

输入名称时出现问题:

['']
Name Already exists
['', '']
Name Already exists
['', '', '']
Name Already exists
['', '', '', '']

代码:

#commands: add name , Run

#imports
import random
from time import sleep
from tkinter import *

#Console and background Handlers
Tables = 6
Names = []    

def AddNames():
    if NewNames in Names:
        print("Name Already exists")
    Names.append(NewNames)
    print(Names)

def Random():
    RandomNum = random.randrange(Tables)
    if RandomNum == 0:
        RandomNum = random.randrange(Tables)
    return RandomNum

def run():
    X = 0
    for i in Names:
        print(Names[X])
        print("Table: " + str(Random()))
        X += 1

#GUI Handler
root = Tk()
root.geometry("1024x768")

e = Text(root, bd=10, font=("Comic Sans MS", 50), width=15, height=2)
e.pack()
NewNames = e.get("1.0", 'end -1c')

AddNameButton = Button(root, text=("Add Name"), width=15, height=5, command=AddNames)
AddNameButton.pack()
root.mainloop()

【问题讨论】:

  • NewNames 被初始化为一个空字符串并且从未被修改过。
  • NewNames = e.get("1.0", 'end -1c') 这里没有修改吗?
  • 是的,它被设置为空字符串,因为此时用户还没有机会输入任何内容,因为它在小部件创建后大约 1 毫秒。
  • 哦,所以我必须在用户按下按钮时调用添加名称?
  • 哦,等一下,我可以将 e.get() 放入添加名称中。对吗?

标签: python python-3.x user-interface tkinter


【解决方案1】:

为了记录,大部分来自 cmets (@Bryan Oakley):

应该处理输入的AddNames 方法实际上并不检查e Text 小部件的内容。

行:

NewNames = e.get("1.0", 'end -1c')

应该写在AddNames 方法中,这样每次要检查条目的内容时,它都会被有效地读取。

和原代码一样,当脚本运行时,e 的内容会被一次性放入NewNames,并且永远不会更新。


附带说明,(至少在 Python 中)使用大写字母命名变量和函数被认为是不好的做法。函数名应该在lower_case_with_underscores 中,CamelCase 应该保留给类名。局部变量名也建议使用lower_case_with_underscores,但最常用的命名方式是mixedCase

Here 是参考,来自 PEP。

【讨论】:

  • 感谢您对名为 :) 的变量的帮助
猜你喜欢
  • 1970-01-01
  • 2020-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
  • 1970-01-01
  • 2021-08-29
相关资源
最近更新 更多