簡體   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