将用户输入从tkinter保存到变量并检查其内容

时间:2015-05-26 17:23:53

标签: python input tkinter python-3.4

我编写了一个用Python模拟纸牌游戏的脚本,用户可以决定他们想要玩多少张牌和多少张牌。此输入由以下代码控制,其中boundary_1boundary_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()检查用户的输入,然后在文本框中打印一条错误消息或输入保存到变量中以进一步如果它被批准使用。有什么好办法吗?

非常感谢提前!

1 个答案:

答案 0 :(得分:2)

最简单的解决方案是使string全局:

def printtext():
    global e
    global string
    string = e.get() 
    text.insert(INSERT, string)   

当您这样做时,代码的其他部分现在可以访问string中的值。

这不是最好的解决方案,因为过度使用全局变量会使程序难以理解。最好的解决方案是采用面向对象的方法,你有一个&#34;应用程序&#34;对象,该对象的一个​​属性就像&#34; self.current_string&#34;。

有关我建议您如何构建程序的示例,请参阅https://stackoverflow.com/a/17470842/7432