尝试使用按钮在Python2.7 tkinter中中断while循环serial readline()函数。从aruduino Mega读取数据

尝试使用按钮在Python2.7 tkinter中中断while循环serial readline()函数。从aruduino Mega读取数据,python,python-2.7,tkinter,arduino,serial-port,Python,Python 2.7,Tkinter,Arduino,Serial Port,我正在尝试中断一个while循环,该循环在程序中打印serial readline()函数。 我有一个退出按钮设置,但这冻结了程序,当我按下它。我正在寻找一种方法,使这个退出按钮功能正常,当我按下它。 任何帮助都将不胜感激 import serial from Tkinter import * ser = serial.Serial('COM4', 9600) # Setting up serial connection class Application(Frame): def f

我正在尝试中断一个while循环,该循环在程序中打印serial readline()函数。 我有一个退出按钮设置,但这冻结了程序,当我按下它。我正在寻找一种方法,使这个退出按钮功能正常,当我按下它。 任何帮助都将不胜感激

import serial
from Tkinter import *

ser = serial.Serial('COM4', 9600) # Setting up serial connection

class Application(Frame):
    def feed_data(self):                 # Serial print function
        while True:
            print ser.readline()


    def createWidgets(self):
        self.QUIT = Button(self)         #Quit button
        self.QUIT["text"] = "QUIT"
        self.QUIT["fg"]   = "red"
        self.QUIT["command"] = self.quit

        self.QUIT.pack({"side": "left"})

        self.DATA_READ = Button(self)          # Serial Read Button
        self.DATA_READ ["text"] = "Data Read",
        self.DATA_READ["command"] = self.feed_data

        self.DATA_READ.pack({"side": "left"})

    def __init__(self, master=None):
        Frame.__init__(self, master)
        self.pack()
        self.createWidgets()

root = Tk()
app = Application(master=root)
app.mainloop()
root.destroy()

您需要通过以下方式修改
createWidgets()
方法:

 def createWidgets(self):
     self.QUIT = Button(self, text='QUIT', bg='red', command=quit)         
     self.QUIT.pack(side=LEFT)    
     self.DATA_READ = Button(self, text='Data Read', command=self.feed_data)  
     self.DATA_READ.pack(side=LEFT)
注意根据,您需要以以下方式重命名变量:

 def createWidgets(self):
     self.QUIT = Button(self, text='QUIT', bg='red', command=quit)         
     self.QUIT.pack(side=LEFT)    
     self.DATA_READ = Button(self, text='Data Read', command=self.feed_data)  
     self.DATA_READ.pack(side=LEFT)
  • self.DATA\u读取→ self.read_数据
  • 自我退出→ 自我退出
但为了不让您自己或程序的维护人员感到困惑,请避免使用保留关键字。这意味着您需要将
self.quit
重命名为类似于
self.quit\u程序