提问人:Ariel 提问时间:10/18/2023 最后编辑:Ariel 更新时间:10/19/2023 访问量:45
Beeware Toga confirm_dialog回调错误
Beeware Toga confirm_dialog callback error
问:
我正在尝试将窗口与 Beeware 一起使用。我了解只有在单击按钮时才应激活回调。下面我附上一个简单的脚本,我用它来尝试它。窗口弹出正常,但是当我单击或按钮时,我收到错误。我在 mode 和 in 中都尝试过,但遇到了同样的问题。在我看来,问题出在回调中,但我找不到让它工作的方法。我将不胜感激任何关于我做错了什么的答案或暗示。confirm_dialog
on_result
OK
confirm_dialog
OK
cancel
func2() takes 1 positional argument but 3 were given
dev
run android
更新:我根据解决问题的答案更正了下面的代码。现在代码工作正常。gimix
import toga
from toga.style import Pack
from toga.style.pack import COLUMN, ROW
class HelloWorld(toga.App):
def startup(self):
main_box = toga.Box(style=Pack(direction=COLUMN))
record_button = toga.Button("func1",on_press=self.func1,style=Pack(padding=5))
main_box.add(record_button)
self.main_window = toga.MainWindow(title=self.formal_name)
self.main_window.content = main_box
def func2(self,dialog,result):
print("callback worked")
def func1(self,widget):
self.main_window.confirm_dialog("title", "message",on_result=self.func2)
return
def main():
return HelloWorld()
答:
2赞
gimix
10/19/2023
#1
我不是 Toga 专家,但我看了一下 的定义及其超类 ,您的回调被调用:ConfirmDialog
MessageDialog
# def completion_handler(self, return_value: bool) -> None:
if self.on_result:
self.on_result(self, result)
正如你所看到的,它有 3 个参数:(你的类)、对话框的(即对话框对象),最后是对话框的返回值。所以定义应该是这样的func2
self
self
def func2(self, dialog, result):
#do something
评论
0赞
Ariel
10/19/2023
非常感谢您的有用回答。完美工作。
评论