GUI接受输入

时间:2013-12-11 02:21:36

标签: python python-3.x tkinter

我还需要帮助让我的变量名为“guess”才能工作。我把它作为一个参数也希望能让它发挥作用。我必须使用GUI界面猜测我的编号程序,到目前为止我的代码是:

from tkinter import*
import random  

class Application(Frame):

    def __init__(self, master):
        """ Initialize the frame. """
        super(Application, self).__init__(master)  
        self.grid()
        self.create_widgets()

    def create_widgets(self,guess):
        self.pw_lbl = Label(self, text = guess)
        self.pw_lbl.grid(row = 1, column = 0, sticky = W)

        self.pw_ent = Entry(self)
        self.pw_ent.grid(row = 1, column = 1, sticky = W)

        self.submit_bttn = Button(self, text = "Submit", command = self.reveal)
        self.submit_bttn.grid(row = 2, column = 0, sticky = W)

    def reveal(self):
         contents = self.pw_ent.get()
         if guess == the_number:
             message = "You got it right!"
         if guess > the_number:
             message = "lower..."
         if guess < the_number:
             message = "higher..."

print("\tWelcome to 'Guess My Number'!")
print("\nI'm thinking of a number between 1 and 100.")
print("Try to guess it in as few attempts as possible.\n")
the_number = random.randint(1, 100)

root = Tk()
root.title('Guess my number')
root.geometry('350x150')

app = Application(root)

1 个答案:

答案 0 :(得分:0)

您的第一个问题是,您已向guess添加了create_widgets参数,但当您调用 {{1时,您尚未为该参数传递任何值}}。所以,你只是得到这个:

create_widgets

但与此同时,你想要的是什么价值?你想要的只是一些静态字符串,比如TypeError: create_widgets() missing 1 required positional argument: 'guess' 。那么为什么要添加一个作为参数?

"Guess"函数中唯一需要guess变量的地方。所以在那里把它变成局部变量。

reveal内,你已经去了:

reveal

contents = self.pw_ent.get() 将成为一个字符串,例如contents。并且您希望"25"成为相应的数字,例如guess。因此,只需在25上致电int

此外,您创建了一个名为contents的变量,但不对其执行任何操作。也许你想改变标签的内容?或者以打印启动横幅的方式将其打印到控制台?在不知道你想做什么的情况下,很难知道究竟要提出什么建议,但你当然希望用它做某事

最后一件事:您忘记在messagemainloop上致电root。没有它,程序将只在屏幕外创建GUI,然后立即退出而不显示它。

它仍然有点笨重 - 它是一个混合的GUI /控制台应用程序,当你可能有一个成员时,你有一个全局app,变量都有奇怪的名字(你是否复制并粘贴它们)在其他地方,比如虚假的登录界面,或者the_number应该对猜谜游戏有意义吗?)等等 - 但它会起作用:

pw_ent