繁体   English   中英

Kivy相当于tkinter的messagebox

[英]Kivy equivalent to tkinter's messagebox

我正在尝试将程序从tkinter转换为Kivy。 当我到达使用messagebox.askyesno的部分时,我想我可以创建一个带有几个按钮的弹出窗口,我就完成了。 我遇到的问题是,虽然Kivy的弹出窗口和tkinter的消息框都是模态的,但当我在函数中调用messagebox.askyesno时,messagebox将暂停当前函数的所有执行,直到消息框被销毁,而弹出窗口将允许功能完成。 我原来的节目了

flag = messagebox.askyesno(message='...',parent=self)
if flag:
    #Stuff if flag is true
else:
    #Stuff if flag is false

但是,这将不适用于Kivy弹出窗口,因为弹出窗口将打开,程序将继续执行。 有没有办法停止执行,直到弹出窗口被破坏,或者解决问题的另一种方法?

基本思想是双人游戏的准对话。 这里,程序询问一个玩家是否想要执行动作,例如移动棋子。 如果玩家说“是”,那么第二个玩家将获得一个messagebox.askyesno用于反向移动。 一个简单的比喻就是将一名跑垒员从一垒打入三垒打入三垒。 如果他想要推进跑步者,或者让跑步者保持在第二位,你将不得不问进攻队。 如果答案是肯定的,那么该计划将不得不向防守队员询问他是否想要投三分。 绝对有可能创建一个函数来处理askyesno的每个实例,并使用适当的绑定,但它似乎过多。

我不太熟悉tkinter如何处理事情,但kivy需要一个稍微不同的心理模型。 你不想在python代码之间停止和启动eventloop,而是可能想要启动弹出窗口,将所需的任何状态传递给它或将其存储在其他地方,然后绑定弹出窗口的结果(例如,用户按下“完成”按钮)进行一些新功能,完成剩余的计算。

如果你愿意,我可以提供一个例子,特别是如果你提供更多关于你想要做什么的信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM