簡體   English   中英

tkinter 消息框的問題

[英]issue with tkinter messagebox

我在我的代碼中使用了幾個 tkinter 消息框。 但是我注意到我在代碼中使用的showinfo消息框有問題。 基本上,我希望在按下消息框上的ok時調用一個函數。 此外,用戶可以通過關閉消息框來選擇不繼續。 但是,看起來當我按 x 圖標關閉消息框時,該函數仍然被調用。 這是一個最低限度的可重現代碼來解釋我的意思。

from tkinter import *
from tkinter import messagebox

root = Tk()

def func() :
    Label(root,text="This is the text").pack()

msg = messagebox.showinfo("Loaded","Your saved state has been loaded")
if msg == "ok" :
    func()

root.mainloop()

我的問題是,我應該怎么做才能在按下 x 圖標時不調用該函數?

有不同類型的messagebox ,您在此處使用的那個不是您實際應該為您的案例使用的。 您想要的是名為askyesno東西,或者以“ask”為前綴的東西,因為您的代碼取決於用戶的操作。 所以你想“詢問”用戶,比如:

from tkinter import *
from tkinter import messagebox

root = Tk()

def func() :
    Label(root,text="This is the text").pack(oadx=10,pady=10)

msg = messagebox.askyesno("Loaded","Your saved state has been loaded")
if msg: #same as if msg == True:
    func()

root.mainloop()

在這里,如果您單擊“是”按鈕, askyesno與其他“ask”前綴函數一樣將返回True1 ,否則它將返回False0

也只是我現在意識到的一些事情, showinfo ,就像其他showinfo 'show' 前綴的消息框函數一樣,無論您按下按鈕還是關閉窗口,都會返回'ok'

一些更多'ask'前綴的消息框~ askokcancelaskquestionaskretrycancelaskyesnocancel 看看這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM