条形图不会添加到现有的tkinter风中

2024-09-30 04:26:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个基于GUI的Tkinter项目,在主屏幕之后,我必须打开一个带有条形图的图形的窗口。下面的代码只是我项目的一部分(项目//and screen2中许多按钮之一的命令是来自另一个根窗口的Toplevel()窗口)

    qy4=Toplevel(screen2)
    qy4.title("4th Query")
    adjustWindow(qy4)


    f1=Figure(figsize=(5,5),dpi=100).add_subplot(111).plot(q4())

    canvas=FigureCanvasTkAgg(f1,master=canvas)
    canvas.draw()
    canvas.get_tk_widget().pack(side=tk.TOP,fill=tk.BOTH,expand=True)

    toolbar=NavigationToolbar2Tk(f1,master=canvas)
    toolbar.update()
    canvas._tkcanvas.pack(side=tk.TOP,fill=tk.BOTH,expand=True) 

但我明白了:enter image description here 我想在我的“qy4”窗口上有相同的图形,这样我就可以在条形图图形的上方或下方添加更多的标签或文本框,我听到了很多东西,但仍然找不到代码中的错误。你知道吗

enter image description here

此外,上图的x轴标签不可见,我如何以以下方式显示它们(请注意,屏幕截图中的以下代码是经过编辑的,用于显示应如何显示): enter image description here

我从其他模块调用的实际代码为q4():

enter image description here 我没有上传整个项目的代码,但只是它的一部分,我对Python和Tkinter相当陌生,我在我的项目中遵循过程方法,我知道这是一个糟糕的编码方式。你知道吗


Tags: 项目代码master图形屏幕tkinterpacktk
1条回答
网友
1楼 · 发布于 2024-09-30 04:26:58

需要将Toplevel窗口的名称指定为master窗口,用于FigureCanvasTkAgg方法中的绘图。你知道吗

可以使用plt.xticks(x_ticks_data, rotation=90)使x轴标签垂直打印。你知道吗

下面是一个简单的例子:

代码:

import tkinter as tk
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg

window = tk.Tk()

def plot():
    top_win = tk.Toplevel(window)

    x = ['Col A', 'Col B', 'Col C']

    y = [50, 20, 80]

    fig = plt.figure(figsize=(4, 5))
    plt.bar(x=x, height=y)

    # You can make your x axis labels vertical using the rotation
    plt.xticks(x, rotation=90)

    # specify the toplevel window as master
    canvas = FigureCanvasTkAgg(fig, master=top_win)
    canvas.draw()
    canvas.get_tk_widget().grid(row=0, column=0, ipadx=40, ipady=20)

btn = tk.Button(window, text='Show plot', command=plot)
btn.grid(row=0, column=0, padx=20, pady=10)

window.mainloop()

输出:

tkinter with plot

相关问题 更多 >

    热门问题