Я новичок в программировании на Python, и проблема, с которой я сталкиваюсь, заключается в том, что при построении графика я не могу разместить график в нужном месте.Я могу разместить кнопки в любом месте, где мне нравится, в окне tkinter, используя метод place () tkinter.
Это для проекта «Мой дом».В приведенном ниже коде я сделал две кнопки, где кнопка «CONNECT» будет подключаться к подключенному arduino, а кнопка plot получит данные из arduino и нанесет их на график, и, поскольку это тестовый код, я просто ввел в него случайные значения.
### Author = Peouse Dutta
import tkinter as tk
from tkinter import ttk
import serial
import serial.tools.list_ports
import time
import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib.pyplot as plt
root = tk.Tk()
root.title("ANALYSER")
root.geometry("1000x700")
root.configure(background = 'white')
def get_ports():
ports = serial.tools.list_ports.comports()
return ports
def findArduino(portsFound):
commPort = 'None'
numConnection = len(portsFound)
for i in range(0,numConnection):
port = portsFound[i]
strPort = str(port)
if 'Arduino' in strPort:
splitPort = strPort.split(' ')
commPort = (splitPort[0])
return commPort
class AppWindow(tk.Tk):
def __init__(self, window):
self.window = window
self.connect = ttk.Button(window, text = "CONNECT", command = self.Connect)
self.connect.pack()
self.getValue = ttk.Button(window, text = "PLOT", command = self.plot)
self.getValue.pack()
def Connect(self):
self.FoundPorts = get_ports()
self.connectPort = findArduino(self.FoundPorts)
if self.connectPort != 'None':
ser = serial.Serial(self.connectPort, baudrate = 9600)
#time.sleep(1.5)
print('Connected to ' + self.connectPort)
tk.messagebox.showinfo('STATUS', 'CONNECTED')
else:
print('Connection Issue!')
tk.messagebox.showinfo('STATUS', 'NOT CONNECTED!')
def plot(self):
fig = plt.figure(figsize = (10,2), dpi = 100)
a = fig.add_subplot(111)
a.plot([1,1,1,1,2,3,3,4],[8,9,5,6,2,2,2,2])
canvas = FigureCanvasTkAgg(fig, master = self.window)
fig.canvas.draw()
canvas.get_tk_widget().pack(side = tk.TOP, fill = tk.Y)
start = AppWindow(root)
root.mainloop()
Я хочу, чтобы построенный график был таким.Я привожу несколько примеров
Позже я сделаю это как