繁体   English   中英

如何弹出一次tkinter消息框?

[英]How to pop up tkinter message box once?

如果self.rmn <= 10 ,我正在努力弄清楚如何在 tkinter 中只显示一次警告。 因为我使用after()消息每秒都显示。 如何显示消息一次请帮助。

这是我的代码:

def setinitqty(self):
    if self.btqty.get() == '':
        msg.showerror('Error','Set Bt Address Quantity')
        
    else:
        self.count = 0
        with open('C:/Users/user/Desktop/Test/test.txt','r') as f:
            for line in f:
                if line.strip():
                    self.count += 1
        self.prntbtadd = self.count
        self.initqty = self.btqty.get()
        self.setbtn['state'] = 'disable'
        self.btqty['state'] = 'disable'
        self.rstbtn['state'] = 'active'
        self.rmn = int(self.initqty) - self.prntbtadd
        self.rmnqtylbl['text'] = str(self.rmn)
        self.rmnqtylbl.after(1000,self.setinitqty)
        if self.rmn <= 10:
            msg.showwarning('Warning','Warning')
            self.rmnbtaddfrm['bg'] = 'red'
            self.rmnqtylbl['bg'] = 'red'

这是我在评论中建议的如何使用全局标志变量 - 在某种程度上这是一个猜测,因为我无法测试它,因为您没有发布可运行的最小、可重现的示例

warning_shown = False  # Define global variable.

class MyClass:
    ...

    def setinitqty(self):
        global warning_shown  # IMPORTANT.

        if self.btqty.get() == '':
            msg.showerror('Error','Set Bt Address Quantity')
        else:
            self.count = 0
            with open('C:/Users/user/Desktop/Test/test.txt','r') as f:
                for line in f:
                    if line.strip():
                        self.count += 1
            self.prntbtadd = self.count
            self.initqty = self.btqty.get()
            self.setbtn['state'] = 'disable'
            self.btqty['state'] = 'disable'
            self.rstbtn['state'] = 'active'
            self.rmn = int(self.initqty) - self.prntbtadd
            self.rmnqtylbl['text'] = str(self.rmn)
            self.rmnqtylbl.after(1000,self.setinitqty)
            if self.rmn <= 10:
                if not warning_shown:
                    msg.showwarning('Warning','Warning')
                    warning_shown = True
                    self.rmnbtaddfrm['bg'] = 'red'
                    self.rmnqtylbl['bg'] = 'red'

暂无
暂无

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

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