tkinter 退出时关闭串行连接

Close the serial connection when tkinter exits

我已经使用

初始化了与 arduino 的串行连接
ser = serial.Serial(port = COMPort, baudrate=9600, timeout=0.1)

但是,当我关闭应用程序时,与连接关联的 LED 在 arduino 上保持打开状态。这意味着串行连接仍然有效。

如何在退出应用程序时自动关闭串行连接?

AFAIK 有两种方法可以实现这一点,一种是将代码放在 mainloop() 下方(正如 acw1668 已经提到的那样),另一种是使用 wm_protocol.

方法一: 只要 window 保持活动状态,mainloop() 之后的任何代码都将停止,因此将代码放在 mainloop() 之后将在 window 关闭后执行它。

root.mainloop()

ser.close()

方法二: 当您尝试 'delete' 或 window 或关闭它时,将触发此协议。因此,您可以将一个函数绑定到此并要求它关闭 window,然后像这样关闭连接:

def close():
    root.destroy() # Close the window
    ser.close() # Then the connection

root.wm_protocol('WM_DELETE_WINDOW',close) # Assuming root = Tk()