python - Python 使用 self.root.protocol("WM_DELETE_WINDOW", event) 禁用“X”按钮在类中不起作用
问题描述
所以首先:我基本上是一个编程菜鸟,我真的不知道如何解决这个“错误”。我在一个简单的测试程序中尝试过这个并且它有效但是当我尝试将它放入我的面向对象编程类时它根本不起作用。如果有人知道解决方案,请告诉我我做错了什么以及为什么它不起作用。(代码本身有效,我没有在这里复制整个代码,因为它不会参与解决方案(我猜))问候!
class GUI(object):
def __init__(self):
self.root = Tk()
self.root.protocol("WM_DELETE_WINDOW", exit)
"""
self.root.geometry(str(self.root.winfo_screenwidth())//2 +
"x" +
str(self.root.winfo_screenheight())//2)
"""
self.xSize = 415
self.ySize = 570
self.root.geometry(str(self.xSize) +
"x" +
str(self.ySize)) # Fenstergröße
self.root.title("P+R Anwesenheit") # Fenstername
self.root.iconbitmap("icon.ico") # Fenstericon
self.root.resizable(False, False) # Sperren der Fenstergröße
#self.root.overrideredirect(True)
self.pixelVirtual = PhotoImage(width=1, height=1) #Dazu da um Widgetgrößen in Pixel angeben zu können
self.kalenderWoche = datetime.date(time.localtime()[0], time.localtime()[1], time.localtime()[2]).isocalendar()[1] # Kalenderwoche des aktuellen Tages
self.groupMode = 2 # 1: Füllen bis zum unteren Rand/ 2: Gleichmäßige Aufteilung (auf 2 Reihen)
self.namenNachnamenListe = listeAuslesen() #Liste der NACHNAMEN aller Mitarbeiter aus mitarbeiter.txt
self.mitarbeiterListe = self.namenNachnamenListe[0] #Einlesen der Mitarbeiter aus mitarbeiter.txt
self.aktiveLabelListe = [] #Liste der Anwesenheitsanzeigenden Label
self.aktiveNamenLabelListe = [] #Liste der Namenslabel der Mitarbeiter
self.labelErstellen = self.labelErstellen() #Aufruf der Methode um alle Labels der GUI zu erstellen
self.buttonsErstellen = self.buttonsErstellen() #Aufruf der Methode um Button zu erstellen
self.namenListe = [] #Fix-Textdateien-Liste
self.buttonState = False #Vergrößern/-kleinern Button Status
self.loginLogs = loginLogsTxt
self.monatsListe = ["Januar", "Februar", "März",
"April", "Mai", "Juni",
"Juli", "August", "September",
"Oktober", "November", "Dezember"]
#Fix für den Fall von Mitarbeitern mit gleichem Nachnamen (oder teilweise gleichem Nachnamen)
for i in self.namenNachnamenListe[1]:
self.namenListe.append(open(pathAnwesenheitsauslese+"\\"+i+"Logoff.txt", "w+"))
for i in self.namenListe:
i.close()
self.fixDeleted = False #Fix angewendet/oder nicht
#Binding
self.root.bind('<Double-Button 1>', self.changeSize2)
def exit(self):
pass
def destroyWindow(self):
copy2("loginLogs.txt", "logs" + "/" + "loginLogs"+str(time.localtime()[2])+";"+str(time.localtime()[1])+";"+str(time.localtime()[0])+".txt")
loginLogsTxt.close()
os.remove("loginLogs.txt")
self.root.destroy()
.
.
.
解决方案
推荐阅读
- r - 如何在 PCA 图中重叠不同的信息?
- amazon-web-services - Apache-Nifi:PutKinesisStream 无法使用 AWS Private Link 终端节点 (v1.14.0)
- angular - 如何在 Angular 的单元测试中模拟 AG-grid 的节点?
- flutter - 颤动随机减速
- r - 如何使用字符串为 dplyr::arrange 指定带有 desc() 的排序变量?
- node.js - Webpack 错误 - 未捕获的 SyntaxError: 无效的正则表达式: /[\n\r\u2028\u2029]/: 正则表达式太大
- perl - 理解 Perl 包的命名空间
- xml-namespaces - 如何在dataweave中使用带有命名空间的变量?
- wso2 - 错误请求 - 使用对端点的调用的 URL 无效
- r - tcltk 包和命令运行时——一个奇怪的交互