Как разместить построенный график в определенном месте в окне tkinter - PullRequest
0 голосов
/ 09 апреля 2019

Я новичок в программировании на 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()

Я хочу, чтобы построенный график был таким.Я привожу несколько примеров

enter image description here

Позже я сделаю это как

enter image description here

...