用tkinter 写了一个窗口的程序,然后这个窗口的程序的按钮指向了另一个函数,我想在点击这个按钮的同时另一个函数开始执行,然后本函数的窗口自动关闭。
由于本窗口有三个类似按钮,用在被指向函数中写destroy()的方法行不通,(会提示不能被关闭因为已经destroyed ),且伴随空白窗口出现。
请问如何解决?
python 如何执行下一个函数时自动停止现在的函数?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 配电网和matlab 2023-05-24 21:18关注
以下内容引用自GPT:
可以在被指向函数中使用Top-level窗口来代替本窗口,并在点击按钮时直接销毁本窗口,同时启动另一个线程来执行需要的函数。具体实现可以参考以下示例代码:import tkinter as tk import threading class MainFrame(tk.Frame): def __init__(self, master=None): super().__init__(master) self.master = master self.create_widgets() def create_widgets(self): self.button1 = tk.Button(self, text="按钮1", command=self.button1_clicked) self.button1.pack() self.button2 = tk.Button(self, text="按钮2", command=self.button2_clicked) self.button2.pack() self.button3 = tk.Button(self, text="按钮3", command=self.button3_clicked) self.button3.pack() def button1_clicked(self): self.start_function_thread(self.function1) self.master.destroy() def button2_clicked(self): self.start_function_thread(self.function2) self.master.destroy() def button3_clicked(self): self.start_function_thread(self.function3) self.master.destroy() def start_function_thread(self, function): thread = threading.Thread(target=function) thread.start() def function1(self): print("执行函数1") def function2(self): print("执行函数2") def function3(self): print("执行函数3") root = tk.Tk() app = MainFrame(master=root) app.pack() app.mainloop()
这里创建了一个MainFrame类作为主窗口,其中包含三个按钮和三个被指向的函数。在点击按钮时,先用
start_function_thread()
方法开启一个新线程来执行相应的函数,然后调用master.destroy()
方法销毁本窗口。这样可以避免空白窗口出现以及不能使用destroy()方法的问题。本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥50 我在一个购物网站的排队系统排队,这个排队到号后重新定向到目标网站进行购物,但是有技术牛通过技术方法直接跳过排队系统进入目标网址购物,有没有什么软件或者脚本可以用
- ¥15 ios可以实现ymodem-1k协议 1024字节传输吗?
- ¥300 寻抓云闪付tn组成网页付款链接
- ¥15 请问Ubuntu要怎么安装chrome呀?
- ¥15 视频编码 十六进制问题
- ¥15 unity terrain打包后地形错位,跟建筑不在同一个位置,怎么办
- ¥15 uniapp实现如下图的图表功能
- ¥15 u-subsection如何修改相邻两个节点样式
- ¥30 vs2010开发 WFP(windows filtering platform)
- ¥15 服务端控制goose报文控制块的发布问题