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()的主要内容,如果未能解决你的问题,请参考以下文章

Tkinter python 退出/退出崩溃

干净地退出 Python Tkinter 应用程序,同时在“之后”循环中的按钮上使用“wait_variable”函数

Python3 tkinter基础 Tk quit 点击按钮退出窗体

Python里tkinter如何重置单选按钮?

tkinter——python的GUI标准库

Python中的tkinter怎么做?