鱼C论坛

 找回密码
 立即注册
查看: 2063|回复: 9

python Tkinter界面,点击右上角X关闭界面的问题

[复制链接]
发表于 2019-5-28 16:43:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
用python的Tkinter写了一个界面,现在遇到一个问题就是点击界面右上角的X关闭界面时,程序占用的资源有的没有释放掉(比如程序打开了计算机串口,在关闭界面的时候没有关闭掉串口,此时串口资源一直被占用),程序创建的线程也没有结束,这个问题如何解决,我想要全部都结束掉
demo代码如下

import tkinter as tk
import threading
import time
win = tk.Tk()

def fun():
    i = 0
    while True:
        print("hello %d"%i)
        time.sleep(1)
        i = i+1

def callback():
    t = threading.Thread(target=fun)
    t.start()

bt = tk.Button(win,text = "按钮",command = callback)
bt.pack()
win.mainloop()

当关闭界面以后环境里边还能答应hello。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2019-5-28 16:56:39 | 显示全部楼层
现在用python写了一个串口上位机,当串口打开的时候,用户关闭了界面,此时串口一直被占用着,别的程序就在用不了这个串口资源了。这时怎么办,和举的线程的例子一样,如何在关闭程序的时候把资源都释放掉

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-28 21:31:36 | 显示全部楼层
不要沉,求大佬支招
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-28 22:01:58 | 显示全部楼层
能不能点右上角击关闭X的时候执行一个方法呢,我在方法内释放资源
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-5-29 08:35:18 | 显示全部楼层
没有大虾拔刀相助?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 00:15:24 From FishC Mobile | 显示全部楼层
加我扣扣: 1706776506教你
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 07:42:27 | 显示全部楼层
你的tkinter不能在idle界面运行,会起冲突的,试试双击打开运行
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-7 08:45:35 | 显示全部楼层
idle也是tkinter写的,会有冲突,导致程序已经结束运行但是窗口不消失的情况(pygame也有),可以保存文件后直接双击运行或者是用pycharm,可以用tsk强制关闭
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-11 09:46:32 | 显示全部楼层
想到一个方法,写个类,继承tkinter,重写del方法
import tkinter as tk
class A(tk.Tk):
    def __init__(self):
        super().__init__()        
    def __del__(self):
        print('aaaaaaaa')
        
if __name__ == '__main__':
    app = A()
    app.title('第一个UI程序')        
    theLabel = tk.Label(app,text='我的第一个窗口程序')           
    theLabel.pack()         
    app.mainloop()    
但是我试了,在idle中运行不会打印aaaaa,直接运行才会打印aaaaa,至于为什么,楼上已经说了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-11 09:53:08 | 显示全部楼层
可以在程序里面加一个退出代码,如果win.quit()不行就win.destroy
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 08:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表