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()
我已经使用
初始化了与 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()