我正在用Python构建一个GTK应用程序,它生成一个始终等于42的等式。我从linux命令行启动它。它说我的函数是不可调用的。我觉得这是可以打电话的,我真的不知道这意味着什么,很抱歉发布这样一个无聊的问题。代码如下:
#!/usr/bin/env python
import random
import gtk
def makePlus():
num2 = random.randint(0,41)
num = 42 - num2
return str(num) + " + " + str(num2)
def makeMinus():
num2 = random.randint(0,41)
num = 42 + num2
return str(num) + " - " + str(num2)
def makeTimes():
num2 = random.randint(0,41)
num2 = float(num2)
num = 42.0 / num2
return str(num) + " x " + str(num2)
def makeDivideBy():
num2 = random.randint(0,41)
num = 42 * num2
return str(num) + " / " + str(num2)
def setResultAs(operation):
if operation == "plus":
result = makePlus()
if operation == "minus":
result = makeMinus()
if operation == "times":
result = makeTimes()
if operation == "divide":
result = makeDivideBy()
textbox.set_text(result)
win = gtk.Window()
win.set_title("OSFT Equation Generator")
win.connect('delete-event', gtk.main_quit)
mainbox = gtk.VBox()
win.add(mainbox)
textbox = gtk.Entry()
mainbox.pack_start(textbox)
btnbox = gtk.HBox()
mainbox.pack_start(btnbox)
plusBtn = gtk.Button("Plus")
btnbox.pack_start(plusBtn)
plusBtn.connect("clicked", setResultAs("plus"))
minusBtn = gtk.Button("Minus")
btnbox.pack_start(minusBtn)
minusBtn.connect("clicked", setResultAs("minus"))
timesBtn = gtk.Button("Times")
btnbox.pack_start(timesBtn)
timesBtn.connect("clicked", setResultAs("times"))
divideBtn = gtk.Button("Divide by")
btnbox.pack_start(plusBtn)
divideBtn.connect("clicked", setResultAs("divide"))
win.show_all()
gtk.main()
我得到的错误是:
^{pr2}$请帮忙。在
当将事件连接到action时,需要传递一个字符串事件名,然后传递一个可调用函数,这意味着“当plusBtn发生名为‘clicked’的事件时,运行
clickedPlus
函数。在代码调用
setResultAs(..)
,并将函数的返回值用作回调(处理程序)。在使用以下格式(^{} ):
例如,替换以下行
^{pr2}$有:
更新
除上述之外,回调函数
setResultAs
应该接收widget(发出信号的小部件)作为第一个参数。在替换以下行:
有:
还有一个错别字:
Callable是Python表示“它是某种函数吗?”在
您没有传递要连接的函数;您没有传递任何函数(因为setResultAs不返回值)。有什么东西可以让gtk打回去。在
相关问题 更多 >
编程相关推荐