Python3 - AppJar (tkinter wrapper) 改变按钮的功能
Python3 - AppJar (tkinter wrapper) change function of a button
所以基本上我有一个按钮,我想更改功能。按钮应该有 fnc HellWorld,如果我点击它 fnc GoodbyeWorld。
我的尝试:
from appJar import gui
app = gui()
app.setGeometry("300x300")
def HelloWorld(none):
print("Hello World!")
app.getButtonWidget("Button").config(command = GoodbyeWorld(none))
def GoodbyeWorld(none):
print("Goodbye World!")
app.getButtonWidget("Button").config(command = HelloWorld(none))
app.addButton("Button", HelloWorld, 1, 1)
app.go()
但是如果我像上面那样做,我的输出是:
Hello World!
Goodbye World!
Hello World!
Goodbye World!
Hello World!
Goodbye World!
Hello World!
Goodbye World!
Hello World!
Goodbye World!
....
然后我收到一些错误消息并以 RecursionError 结束。
我是不是做错了什么? (可能是..)
Link 到 AppJar:http://appjar.info/
您正在混合分配函数的 appJar 方法和 tkinter 方法。你需要坚持使用一个,因为我知道 tkinter,我会建议 tkinter 方法:
from appJar import gui
app = gui()
app.setGeometry("300x300")
def HelloWorld():
print("Hello World!")
app.getButtonWidget("Button").config(command = GoodbyeWorld)
def GoodbyeWorld():
print("Goodbye World!")
app.getButtonWidget("Button").config(command = HelloWorld)
app.addButton("Button", None, 1, 1)
app.getButtonWidget("Button").config(command = HelloWorld) # set initial command
app.go()
您可能需要考虑一下为什么要重新分配该功能;这似乎很不寻常。对于您的示例,我只使用一个循环遍历数据的函数:
from appJar import gui
from itertools import cycle
to_print = cycle(["Hello World!", "Goodbye World!"])
app = gui()
app.setGeometry("300x300")
def output(btn):
print(next(to_print))
app.addButton("Button", output, 1, 1)
app.go()
所以基本上我有一个按钮,我想更改功能。按钮应该有 fnc HellWorld,如果我点击它 fnc GoodbyeWorld。
我的尝试:
from appJar import gui
app = gui()
app.setGeometry("300x300")
def HelloWorld(none):
print("Hello World!")
app.getButtonWidget("Button").config(command = GoodbyeWorld(none))
def GoodbyeWorld(none):
print("Goodbye World!")
app.getButtonWidget("Button").config(command = HelloWorld(none))
app.addButton("Button", HelloWorld, 1, 1)
app.go()
但是如果我像上面那样做,我的输出是:
Hello World!
Goodbye World!
Hello World!
Goodbye World!
Hello World!
Goodbye World!
Hello World!
Goodbye World!
Hello World!
Goodbye World!
....
然后我收到一些错误消息并以 RecursionError 结束。
我是不是做错了什么? (可能是..) Link 到 AppJar:http://appjar.info/
您正在混合分配函数的 appJar 方法和 tkinter 方法。你需要坚持使用一个,因为我知道 tkinter,我会建议 tkinter 方法:
from appJar import gui
app = gui()
app.setGeometry("300x300")
def HelloWorld():
print("Hello World!")
app.getButtonWidget("Button").config(command = GoodbyeWorld)
def GoodbyeWorld():
print("Goodbye World!")
app.getButtonWidget("Button").config(command = HelloWorld)
app.addButton("Button", None, 1, 1)
app.getButtonWidget("Button").config(command = HelloWorld) # set initial command
app.go()
您可能需要考虑一下为什么要重新分配该功能;这似乎很不寻常。对于您的示例,我只使用一个循环遍历数据的函数:
from appJar import gui
from itertools import cycle
to_print = cycle(["Hello World!", "Goodbye World!"])
app = gui()
app.setGeometry("300x300")
def output(btn):
print(next(to_print))
app.addButton("Button", output, 1, 1)
app.go()