【问题标题】:Tkinter gui only plots figure when window is being resizedTkinter gui 仅在调整窗口大小时绘制图形
【发布时间】:2021-01-10 00:43:34
【问题描述】:

我有一个将简单情节嵌入到 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 窗口。

【问题讨论】:

  • 你需要在plotData()函数的最后调用my_canvas.draw()
  • @acw1668 你能把这个作为答案让我接受吗?

标签: python user-interface button tkinter resize


【解决方案1】:

您需要在plotData()末尾调用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')
    my_canvas.draw() # draw the graph

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2017-03-25
    • 2011-05-18
    • 1970-01-01
    • 2017-11-18
    相关资源
    最近更新 更多