python不显示关闭窗口按钮_创建一个没有X(关闭)按钮的python tkinter窗口

本文介绍如何在Python Tkinter中创建一个不显示关闭按钮的窗口,用于在执行长时间操作如文件复制和数据库更新时向用户提供进度信息,并阻止用户在任务完成前关闭窗口。作者遇到的问题在于如何在等待窗口关闭的同时执行后台任务,以及防止用户强制关闭窗口。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我正在编写一个“向导”类型的Python Tkinter GUI,它从用户那里收集信息,然后根据用户的条目执行若干操作:文件复制、数据库更新等。处理通常需要30-60秒,在此期间,我希望:向用户提供活动和进度的文本更新

阻止用户关闭应用程序,直到它完成所做的操作

我开始的路线是让文本更新出现在配置为trainsient的子窗口中,并使用wait_window暂停主循环,直到活动完成。这对我创建的其他自定义对话框很有用,这些对话框具有调用窗口的destroy方法的确定/取消按钮。基本方法是:def myCustomDialog(parent,*args):

winCDLG = _cdlgWin(parent,*args)

winCDLG.showWin()

winCDLG.dlgWin.focus_set()

winCDLG.dlgWin.grab_set()

winCDLG.dlgWin.transient(parent)

winCDLG.dlgWin.wait_window(winCDLG.dlgWin)

return winCDLG.userResponse

class _cdlgWin():

def __init__(self,parent,*args):

self.parent = parent

self.dlgWin = tk.Toplevel()

self.userResponse = ''

def showWin(self):

#Tkinter widgets and geometry defined here

def _btnOKClick(self):

#self.userResponse assigned from user entry/entries on dialog

self.dlgWin.destroy()

def _btnCancelClick(self):

self.dlgWin.destroy()

但是,这种方法不适用于我要创建的新监视和更新对话框。

首先,因为没有用户启动的操作来触发复制/更新活动,然后是destroy,所以我必须将它们放在showWin或其他方法中。我试过两种方法,但都陷入了一种竞争状态(代码完成了复制/更新的工作,但随后在窗口出现之前尝试销毁它),而且在激活另一个方法之前,它不会首先执行复制/更新工作,因为它击中了wait_window。

如果我能找出一个解决方法,那么第二个问题(防止用户在工作完成之前关闭子窗口)将包含在下面的答案中。

所以。。。有没有什么绷带我可以申请使这种方法的工作方式,我想?或者我需要因为它不能工作而放弃它吗?(如果是后者,我有没有办法实现最初的目标?)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值