python - 尝试使用按钮打破 python 2.7 tkinter 中的 while 循环串行 readline () 函数。从 aruduino Mega 读取数据

标签 python python-2.7 tkinter arduino serial-port

我正在尝试打破一个 while 循环,该循环在我的程序中打印串行 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)

注意,根据 PEP 8 ,您需要这样重命名变量:

  • self.DATA_READ → self.read_data
  • self 退出→ self 退出

但是为了不让您自己或程序的维护者感到困惑,请避免使用保留关键字。这意味着您需要将 self.quit 重命名为 self.quit_program

关于python - 尝试使用按钮打破 python 2.7 tkinter 中的 while 循环串行 readline () 函数。从 aruduino Mega 读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38229013/

相关文章:

python - 如何让 Python 3.5 和 Anaconda 3.5 在 ubuntu 16.04 上运行?

macos - 用于创建 macOS 应用程序的 cx_Freeze 编码

python - Tkinter pack() 几何管理器困惑

python - tkinter Canvas : text object variable font size?

python - Pandas :计算时间范围内的平均值

python - 无法安装 python 包并在 GitHub Action 中使用它

python - Python findall 中的多个正则表达式

python - 关于使用空 ndarray 进行 numpy 索引的奇怪事情

python - PyCharm 摆脱 doctest 背景颜色

python - 如果键存在,则按键对字典进行排序,如果不将其放在列表末尾