我目前正处于一个介绍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复制和粘贴格式很奇怪)
答案 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()