当用消息框提示用户时,我可以阻止tkinter窗口打开吗



我举了一个简单的例子来说明我遇到的问题。当我打开一个消息框时,我想防止带有羽毛和标题tk的小方块tkinter框弹出。下面的示例代码:

import tkinter as tk
from tkinter import messagebox
import pyodbc
class app1(tk.Tk):
def __init__(self, *args, **kwargs):
try:
tk.Tk.__init__(self, *args, **kwargs)
connection(self)
self.cursor.execute('SELECT 1')
except:
messagebox.showerror(title='Error', message='An error has occured')

class connection():
def __init__(self, controller):
try:
driver_name = ''
driver_names = [x for x in pyodbc.drivers() if x.endswith(' for SQL Server')]
if driver_names:
driver_name = driver_names[0]
controller.conn = pyodbc.connect(f'Driver={driver_name}; '
'Server=1.1.1.1TEST,9400;'
'Database=Test;'
'pool_pre_ping=True;' 
'pool_recycle=3600;'
'UID=test;'
'PWD=test;',
timeout=1
)
controller.cursor = controller.conn.cursor()
except:
messagebox.showerror(title='Error', message='An error has occured')

if __name__ == "__main__":
app = app1()
app.mainloop()

您可以在app1类的__init__期间使用self.withdraw()撤回根窗口。如果要再次显示根窗口,请使用self.deiconify():

class app1(tk.Tk):
def __init__(self, *args, **kwargs):
try:
tk.Tk.__init__(self, *args, **kwargs)
self.withdraw()  # withdraw root window
connection(self)
self.cursor.execute('SELECT 1')
except:
messagebox.showerror(title='Error', message='An error has occured')
self.deiconify()  # show root window

最新更新