首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tKmessagebox超时后自动选择

tKmessagebox超时后自动选择
EN

Stack Overflow用户
提问于 2018-08-07 15:07:47
回答 1查看 814关注 0票数 0

我想显示一个带有Yes或No选项的消息框。如果用户在超时时间(例如:5秒)中没有选择任何选项,则应使用默认的YES选项关闭Messagebox。我怎样才能做到这一点?

下面是我使用的代码,但它的resp值始终为False。

代码语言:javascript
复制
    from Tkinter import *
    import tkMessageBox

    time = 2000
    def status():
       resp=True
       root.destroy()
    root = Tk()
    root.withdraw()
    root.after(time,status)
    resp=tkMessageBox.askyesno(title='Test',message='Click Yes otherwise No',default=tkMessageBox.YES)
    print resp
    root.mainloop()
EN

回答 1

Stack Overflow用户

发布于 2018-08-07 19:53:19

使用默认的askyesno消息框,您无法做到这一点。您可以使用自定义对话框来执行此操作,例如:

代码语言:javascript
复制
import Tkinter as tk

class MyDialog(tk.Toplevel):

    def __init__(self, parent, text):

        tk.Toplevel.__init__(self, parent)
        tk.Label(self, text=text).grid(row=0, column=0, columnspan=2, padx=50, pady=10)

        b_yes = tk.Button(self, text="Yes", command=self.yes, width=8)
        b_yes.grid(row=1, column=0, padx=10, pady=10)
        b_no = tk.Button(self, text="No", command=self.no, width=8)
        b_no.grid(row=1, column=1, padx=10, pady=10)

        self.answer = None
        self.protocol("WM_DELETE_WINDOW", self.no)

    def yes(self):
        self.answer = "Yes"
        self.destroy()

    def no(self):
        self.answer = "No"
        self.destroy()

def popup():
    d = MyDialog(root, "Click Yes or No")
    root.after(5000, d.yes)
    root.wait_window(d)  
    print d.answer

root = tk.Tk()
tk.Button(root, text="Show popup", command=popup).pack()
root.mainloop()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51720811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档