我用Python编写了一个模拟纸牌游戏的脚本,其中用户决定他们想要玩多少张牌和多少摞牌。该输入由以下代码控制,其中boundary_1
和boundary_2
以整数间隔给出上限和下限,消息为用户输入:
def input_check(boundary_1, message, boundary_2):
run = True
while run:
try:
user_input =int(input(message))
if boundary_1 <= user_input <= boundary_2:
run = False
return user_input
else:
print ("Incorrect Value, try again!")
run = True
except ValueError:
print ("Incorrect Value, try again!")
我现在想尝试使用tkinter从这个纸牌游戏中制作一个GUI,因此我想知道是否有任何方法可以将用户的输入保存到可以发送到上面的input_check()
函数的变量中?我阅读了一些关于tkinter的教程,发现了以下代码:
def printtext():
global e
string = e.get()
text.insert(INSERT, string)
from tkinter import *
root = Tk()
root.title('Name')
text = Text(root)
e = Entry(root)
e.pack()
e.focus_set()
b = Button(root,text='okay',command=printtext)
text.pack()
b.pack(side='bottom')
root.mainloop()
下面的代码只是在文本框中打印用户的输入,我需要的是由我的input_check()
检查用户的输入,然后在文本框中打印错误消息,或者如果输入被批准,则将输入保存到一个变量以供进一步使用。有什么好办法吗?
提前感谢!
最简单的解决方案是使string
全局化:
def printtext():
global e
global string
string = e.get()
text.insert(INSERT, string)
当你这样做时,你的代码的其他部分现在可以访问string
中的值。
这不是最好的解决方案,因为过度使用全局变量会使程序难以理解。最好的解决方案是采用面向对象的方法,其中有一个"应用程序"对象,该对象的一个属性将类似于"self.current_string"。
有关我建议如何构建程序的示例,请参见https://stackoverflow.com/a/17470842/7432