tkinter "x" 在退出时执行 ser.close()
Posted
技术标签:
【中文标题】tkinter "x" 在退出时执行 ser.close()【英文标题】:tkinter "x" performing ser.close() on exit 【发布时间】:2014-09-24 11:41:52 【问题描述】:我有一个通过 pyserial 和 tkinter 输出串行命令的小脚本。
一切正常,但只需要关闭并释放串口并想使用角落的“X”。
据我了解,这是一个 o/s “X”,而不是 tkinter 本身。
谁能指点我正确的方向?
【问题讨论】:
【参考方案1】:你可以使用this之类的东西
import Tkinter as tk
import tkMessageBox
def ask_quit():
if tkMessageBox.askokcancel("Quit", "You want to quit now? *sniff*"):
# close your serial here
root.destroy()
root = tk.Tk()
root.protocol("WM_DELETE_WINDOW", ask_quit)
root.mainloop()
【讨论】:
【参考方案2】:使用 Tk 的协议方法。如果您的窗口继承自 Tk,您可以执行类似
的操作self.protocol("WM_DELETE_WINDOW", self.exit)
在__init__
方法中self.exit是关闭资源的函数。
如果您的窗口本身就是一个 Tk 对象,您可以执行类似的操作
root = Tkinter.Tk()
root.protocol("WM_DELETE_WINDOW", <function to close resources>)
【讨论】:
以上是关于tkinter "x" 在退出时执行 ser.close()的主要内容,如果未能解决你的问题,请参考以下文章
干净地退出 Python Tkinter 应用程序,同时在“之后”循环中的按钮上使用“wait_variable”函数