tkinter 退出时关闭串行连接
Posted
技术标签:
【中文标题】tkinter 退出时关闭串行连接【英文标题】:Close the serial connection when tkinter exits 【发布时间】:2021-04-21 23:16:26 【问题描述】:我已经使用 arduino 初始化了一个串行连接,使用
ser = serial.Serial(port = COMPort, baudrate=9600, timeout=0.1)
但是,当我关闭应用程序时,与连接关联的 LED 在 arduino 上保持打开状态。这意味着串行连接仍然处于活动状态。
当我退出应用程序时,如何自动关闭串行连接?
【问题讨论】:
可以在tkintermainloop()
之后调用close函数。
谢谢你们。对不起酷云,我之前很忙。
【参考方案1】:
AFAIK有两种方法可以实现这一点,一种是将代码放在mainloop()
下面(正如acw1668已经提到的),另一种是使用wm_protocol
。
方法一:
只要窗口还活着,mainloop()
之后的任何代码都会停止,因此将代码放在mainloop()
之后会在窗口关闭后执行。
root.mainloop()
ser.close()
方法二: 当您尝试“删除”或关闭窗口时会触发此协议。所以你可以绑定一个函数到 this 并要求它关闭窗口,然后像这样关闭连接:
def close():
root.destroy() # Close the window
ser.close() # Then the connection
root.wm_protocol('WM_DELETE_WINDOW',close) # Assuming root = Tk()
【讨论】:
以上是关于tkinter 退出时关闭串行连接的主要内容,如果未能解决你的问题,请参考以下文章
在 Tkinter 文本框中显示从串行端口读取的数据时,发出处理数据
结合 Tkinter 和 win32ui 使 Python 在退出时崩溃