Tkinter Canvas: Itemconfig не удалось обновить цвет - PullRequest
0 голосов
/ 28 октября 2019

Мне нужно изменить цвет прямоугольника, созданного с помощью элемента Canvas. Я посмотрел на другие вопросы, но не нашел ответа на свою проблему.

Я записываю микрофон с помощью звуковой карты USB. Как только запись началась, я хочу поставить КРАСНЫЙ свет и, когда она закончится, вернуть ее к зеленому.

Вот код:

main.py:

import tkinter as tk
from GUI import Demo1

def main(): 
    root = tk.Tk()
    app = Demo1(root)
    root.mainloop()

if __name__ == '__main__':
    main()

GUI.py:

class Demo1:
  def __init__(self, master):
        #Set geometry and title
        self.master = master
        self.master.title("DAQ - Sound Pressure Level")
        self.master.geometry("480x320")


        # Canvas zone
        self.canvas = tk.Canvas(self.master,width=40,height=20,background='white')
        self.canvas.grid(row=0,column=3)
        self.frame = Frame(self.master)
        self.frame.grid(row=0,column=3)
        self.rect1 = self.canvas.create_rectangle(0,0,40,20, fill="green")
        #canvas.bind(func=changecolor(canvas))



        #set buttons
        self.quitbutton = tk.Button(self.master, text = 'Quit', width = 10, command = self.close_windows)
        self.quitbutton.grid(column=1,row=0)
        self.startbutton = tk.Button(self.master, text = 'Start', width = 10, command = lambda: self.startacquisition())
        self.startbutton.grid(column=0,row=0)
        #self.zerobutton = tk.Button(self.master,text = 'Zero', width = 10, command = lambda: self.zerocalibration())
        #self.zerobutton.grid(column=2,row=0)
        #self.livebutton = tk.Button(self.master,text="Live/Stop", command=lambda: self.gui_handler, bg="red", fg="white")
        #self.livebutton.grid(column=2,row=0)


  def startacquisition(self):
        chunk = 8192  # Record in chunks 
        print("Changing rect color to red")
        self.canvas.itemconfig(self.rect1,fill='red')
        p = pyaudio.PyAudio()  # Create an interface to PortAudio
        [....recording stuff...]
        [...preparing plot...]
        plt.show()
        self.canvas.itemconfig(self.rect1,fill='green')


Поэтому, когда я нажимаю кнопку СТАРТ, она вызывает функцию запуска (само). Что случилось, так это то, что цвет не обновляется, пока я не закрою весь сюжет.

Почему?

Спасибо за вашу помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...