简单的GUI按钮和输入

时间:2017-03-14 00:07:36

标签: python codeskulptor

我目前正处于一个介绍cs类,并且有一个关于简单GUI的问题,更具体地说是如何取一个数字(ex 6,7,8)输入,当按下按钮时,取输入数字并确定它是否是偶数或奇数到目前为止是我所拥有的,我得到的错误信息表明:“button_handler()只需1个参数(0给定)”有人可以向我解释我做错了什么吗?

import simplegui
global text_input

frame = simplegui.create_frame('Testing', 250, 250)
label = frame.add_label('Divisable by 6?')

def input_handler(text_input):
    print "You entered,", text_input

def button_handler(num):
    if float(num) / 6 == 0:
        print "divisable by six"
    else:
        print "Not divisable by 6"


button1 = frame.add_button('divisable by 6?', button_handler)
inp = frame.add_input('Please insert number', input_handler, 50)

frame.start()

(BTW,从代码skulptor复制和粘贴格式很奇怪)

3 个答案:

答案 0 :(得分:1)

我熟悉tkinter并且没有使用过simplegui,但是从错误信息中我可以猜出问题。

button_handler是一个回调,当单击按钮时,该回调称为,没有任何参数。但是您使用参数number定义它。您必须重新编写button_handler to get the number from the input some other way. I know how to do that with tkinter, but not for simplegui. Perhaps input_handler should write a global that button_handler`才能访问。

答案 1 :(得分:0)

在这一行:

for (int i = 0; i < x.length; i++) {
...
} 

你没有向button_handler提供任何东西。换句话说,它没有任何论据。但是在代码的其他地方,你要求button_handler只有一个参数。因此,您需要更新上面一行中对button_handler的引用,以说明这一事实。

(无论如何,这是基本的一点:我不想对你的其余代码发表评论,因为你说它正在建设中。)

答案 2 :(得分:0)

来自frame.add_button()的CodeSculptor documentation

  

应该定义处理程序,不带参数

您可以使用get_text()获取输入字段的内容。这是一个简单的例子,当按下按钮时打印输入字段的内容:

import simplegui

def input_handler(text_input):
    pass

def button_handler():
    print inp.get_text()

frame = simplegui.create_frame("Demonstration of input and button", 300, 300) 
inp = frame.add_input("Input:", input_handler, 100)
frame.add_button("Print", button_handler, 100)
frame.start()