Когда я рисую, открывается пустое окно FigureCanvas. Также графики становятся видимыми в GUI только при изменении размера окна (FigureCanvas). - PullRequest
0 голосов
/ 10 июля 2020

Пожалуйста, помогите мне решить следующие проблемы:

  1. Каждый раз, когда я рисую какой-либо файл пробного камня (.snp), открывается лишнее пустое окно FigureCanvas. Если я оставлю его или минимизирую, то при повторном построении он не восстанавливается, и ни одно новое избыточное окно не открывается. Но если я закрою пустое окно, а затем при повторном построении графика оно откроется.

  2. Кроме того, график в GUI обновляется только при взаимодействии с FigureCanvas, то есть либо изменяя его размер, увеличивая главное окно или используя панель NavigationToolbar. Заранее спасибо!

    from pylab import *
    import skrf as rf
    rf.stylely()
    
    from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2Tk
    from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
    
    from tkinter import *
    from tkinter.filedialog import askopenfilename
    
    def graph():
        rf.Network(filename).plot_s_db(ax=fig.gca())
        rf.Network(filename).plot_s_smith(ax=fig2.gca())
            
    def browseFile():
        global filename
        n=2
        filename = askopenfilename(defaultextension=f".s{n}p",filetypes=[("Touchstone File",f"*.s{n}p")])
        fig.clf()
        fig2.clf()
    
    if __name__ == '__main__':
        root = Tk()
        root.geometry("1500x900+200+60")
        root.minsize(900,900)
    
        # Plot 1 Frame
        frame4 = Frame(root,bg="light grey",highlightbackground="black", highlightthickness=1)
        frame4.pack(side="left",fill="both",expand=1)
    
        # Browse Area Frame
        frame3 = Frame(root,bg="light grey",highlightbackground="black", highlightthickness=1)
        frame3.pack(side="left")
    
        # Plot 2 Frame
        frame5 = Frame(root,bg="light grey",highlightbackground="black", highlightthickness=1)
        frame5.pack(side="left",fill="both",expand=1)
    
        b = Button(frame3,fg="red",text="Browse",command=browseFile)
        b.grid(row=1,column=1,pady=20, padx=10)
        b.config(height = 2, width = 8)
    
        b = Button(frame3,text="Plot!",fg="red",command=graph)
        b.grid(row=1,column=2,pady=20,padx=10)
        b.config(height = 2, width = 8)
    
        # Plot 1
        Label(frame4,text="S Parameters",bg="light grey").pack()
        fig = Figure(figsize=(8.67, 5.4), dpi=100) 
        # fig.clf()
        fig.add_subplot(111)
        canvas1 = FigureCanvasTkAgg(fig,frame4)  # A tk.DrawingArea.
    
        toolbar = NavigationToolbar2Tk(canvas1,frame4)
        toolbar.update()
        canvas1._tkcanvas.pack(side="top", expand=0)
    
        canvas1.get_tk_widget().pack(expand=1)
        # canvas1.draw()
    
        # Plot 2
        Label(frame5,text="Smith Chart",bg="light grey").pack()
        fig2 = Figure(figsize=(8.67, 5.4), dpi=100) 
        # fig2.clf()
        fig2.add_subplot(111)
        canvas2 = FigureCanvasTkAgg(fig2,frame5)
    
        toolbar = NavigationToolbar2Tk(canvas2,frame5)
        toolbar.update()
        canvas2._tkcanvas.pack(side="top", expand=0)
    
        canvas2.get_tk_widget().pack(expand=1)
        # canvas2.draw()
    
    root.mainloop()
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...