尝试使用按钮打破 python 2.7 tkinter 中的 while 循环串行 readline () 函数。从 Aruduino Mega 读取数据
Trying to break a while loop serial readline () function in python 2.7 tkinter using a Button. Reading data from aruduino Mega
我正在尝试打破一个 while 循环,它在我的程序中打印串行 readline() 函数。
我设置了一个退出按钮,但是当我按下它时程序会冻结。我正在寻找一种方法,让我在按下 QUIT 按钮时能够正常工作。
任何帮助将不胜感激。
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)
注意根据PEP 8,你需要这样重命名你的变量:
- self.DATA_READ→self.read_data
- self.QUIT→self.quit
但是为了不让您自己或程序的维护者感到困惑,请避免使用保留关键字。这意味着您需要将 self.quit
重命名为 self.quit_program
我正在尝试打破一个 while 循环,它在我的程序中打印串行 readline() 函数。 我设置了一个退出按钮,但是当我按下它时程序会冻结。我正在寻找一种方法,让我在按下 QUIT 按钮时能够正常工作。 任何帮助将不胜感激。
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)
注意根据PEP 8,你需要这样重命名你的变量:
- self.DATA_READ→self.read_data
- self.QUIT→self.quit
但是为了不让您自己或程序的维护者感到困惑,请避免使用保留关键字。这意味着您需要将 self.quit
重命名为 self.quit_program