-1

我目前在一个介绍 cs 课程中,并且有一个关于简单 GUI 的问题,更具体地说是如何输入数字(例如 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()

(顺便说一句,从代码 skulptor 复制和粘贴时,格式很奇怪)

4

3 回答 3

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. Perhapsinput_handler should write a global thatbutton_handler` 才能访问。

于 2017-03-14T00:21:27.593 回答
0

来自CodeSculptor文档frame.add_button()

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

您可以使用 获取输入字段的内容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()
于 2017-03-14T01:50:55.773 回答
0

在此行中:

button1 = frame.add_button('divisable by 6?', button_handler)

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

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

于 2017-03-14T00:18:07.460 回答