0

我正在制作一个基于 GUI 的 Tkinter 项目,在主屏幕之后,我必须打开以下窗口,其中包含一个绘制了条形图的图形。以下代码只是我项目的一部分(以及项目中许多按钮之一的命令//并且 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) 

但我明白了:在此处输入图像描述 我想在我的“qy4”窗口上有相同的数字,这样我就可以在条形图上方或下方添加更多标签或文本框,我听说尝试了 n 件事情,但仍然找不到什么是代码错误。

在此处输入图像描述

此外,上图的 x 轴标签不可见,我如何以下列方式显示它们(请注意,屏幕截图中的以下代码已编辑以显示应如何显示): 在此处输入图像描述

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

在此处输入图像描述 我没有上传整个项目代码,只是其中的一部分,我对 Python 和 Tkinter 很陌生,我在我的项目中遵循程序方法,我知道这是一种不好的编码方式。

4

1 回答 1

1

您需要在方法中将窗口的名称指定为绘图的Toplevel窗口。masterFigureCanvasTkAgg

您可以使用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 与情节

于 2019-12-23T11:20:59.593 回答