[英]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.