Tkinter gui 仅在调整窗口大小时绘制图形

我有一个脚本,将一个简单的情节嵌入到 Tkinter gui 中。有一个用于绘图的按钮,当按下它时,它似乎什么也没做,但如果窗口稍微调整大小,绘图就会弹出。gui 窗口足够大以包含情节,我在这里做错了什么?


代码


print('\n'*3)

import tkinter as tk

import matplotlib.pyplot as plt  

from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

from matplotlib.figure import Figure


#MAKE ROOT WINDOW

root = tk.Tk()

root.title("Tab Widget")

#root.geometry("600x450")


#MAKE A FIGURE OBJECT

my_figure = Figure(figsize = (4, 4), dpi = 100) 


#MAKE A FRAME WIDGET

frame1 = tk.Frame(root, bd=2, relief=tk.GROOVE)

frame1.pack(side=tk.LEFT, anchor=tk.N, fill=tk.BOTH, expand=True)

frame2 = tk.Frame(root, bd=2, relief=tk.GROOVE)

frame2.pack(side=tk.RIGHT)


#MAKE A CANVAS OBJECT

my_canvas = FigureCanvasTkAgg(my_figure, master = frame1) # creating the Tkinter canvas containing the Matplotlib figure  


# TURN THE CANVAS OBJECT INTO A CANVAS WIDGET

my_canvas.get_tk_widget().pack() # placing the canvas on the Tkinter window

my_canvas.draw()


def plotData():

    plot1 = my_figure.add_subplot(111) # adding the subplot 

    x = [1,2,3,4,5]

    y = [11, 3, 6, 9,12]

    plot1.plot(x, y, marker='o', c='b')


# MAKE BUTTON TO PLOT GRAPH

button1 = tk.Button(frame2, text = "Plot", command = plotData, relief = tk.GROOVE, padx =20, pady =20 )

button1.pack(side="right")


root.mainloop()

期望的结果


无需调整大小即可查看绘图的 GUI 窗口。


素胚勾勒不出你
浏览 87回答 1
1回答

慕森卡

您需要my_canvas.draw()在以下时间结束时致电plotData():def plotData():    plot1 = my_figure.add_subplot(111) # adding the subplot     x = [1,2,3,4,5]    y = [11, 3, 6, 9,12]    plot1.plot(x, y, marker='o', c='b')    my_canvas.draw() # draw the graph
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python