Я новичок в области Tkinter. У меня есть небольшая задача создать GUI с помощью Tkinter. Мне просто нужно несколько кнопок, например Read data
, stop Read data
и quit
. Здесь данные поступают через последовательный порт.
Я создал код. Моя идея заключается в том, что когда я нажимаю кнопку Read data
, он должен go, а l oop, и там он должен прочитать данные и распечатать их на GUI. Когда я нажимаю stop Read data
, он должен перестать читать его.
Однако, когда я нажимаю кнопку Read data
, он будет, пока l oop и GUI висит там. Я не могу нажать ни одну кнопку и не вижу данных.
Вот мой код:
import tkinter as tk
import serial,time
import datetime
import array as arr
addr = "COM10" ## serial port to read data from
baud = 115200 ## baud rate for instrument
ser = serial.Serial(
port = addr,\
baudrate = baud,\
parity=serial.PARITY_NONE,\
stopbits=serial.STOPBITS_ONE,\
bytesize=serial.EIGHTBITS,\
timeout=1)
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.pack()
self.create_widgets()
def create_widgets(self):
self.appName = tk.Button(self,fg="red", bg="blue")
self.appName["text"] = "SCAN "
self.appName.pack(side="top")
self.startScanBtn = tk.Button(self,fg="red", bg="green")
self.startScanBtn["text"] = "Start Scanning "
self.startScanBtn["command"] = self.scan
self.startScanBtn.pack(side="left")
self.stopScanBtn = tk.Button(self,fg="black", bg="red")
self.stopScanBtn["text"] = "Stop Scanning "
self.stopScanBtn.pack(side="right")
self.quit = tk.Button(self, text="QUIT", fg="red",
command=self.master.destroy)
self.quit.pack(side="bottom")
def scan(self):
while(true):
c = ser.readline() # attempt to read a character from Serial
line = c.decode('utf-8').replace('\r\n', '')
tk.Label(self,text = line).pack()
root = tk.Tk()
app = Application(master=root)
app.mainloop()