【发布时间】:2018-06-18 13:50:17
【问题描述】:
我正在尝试使用 tkinter 创建一个 GUI 应用程序,其中要求用户输入 x 和 y 值,完成后,单击生成散点图的按钮。当我运行代码时,什么也没有发生,我没有收到错误消息,没有弹出窗口,而且我不确定出了什么问题。这是我的代码:
import matplotlib
matplotlib.use('TkAgg')
import numpy as np
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from tkinter import *
class mclass:
mylist = []
mylist1 = []
def __init__(self, window):
self.window = window
self.box1 = Entry(window)
self.button1 = Button(window, text="enter", command=lambda: get_data1(mylist), width=5)
self.button1.grid(row=0, column=2)
self.box1.pack()
self.button1.pack()
self.box2 = Entry(window)
self.button2 = Button(window, text="enter", command=lambda: get_data2(mylist1), width=5)
self.button2.grid(row=1, column=2)
self.box2.pack()
self.button2.pack()
self.box3 = Entry(window)
self.button3 = Button(window, text="Finish & Plot", command=self.plot)
self.box3.pack()
self.button3.pack()
def get_data1(l):
l.append(self.box1.get())
print(l)
def get_data2(l1):
l1.append(self.box2.get())
print(l1)
var1 = StringVar()
var1.set("X Values:")
label1 = Label(window, textvariable=var1, height=2)
label1.grid(row=0, column=0)
ID1 = StringVar()
self.box1 = Entry(window, bd=4, textvariable=ID1)
self.box1.grid(row=0, column=1)
var2 = StringVar()
var2.set("Y Values:")
label2 = Label(window, textvariable=var2, height=2)
label2.grid(row=1, column=0)
ID2 = StringVar()
self.box2 = Entry(window, bd=4, textvariable=ID2)
self.box2.grid(row=1, column=1)
def plot(self):
x = np.array(mylist)
v = np.array(mylist1)
fig = Figure(figsize=(6, 6))
a = fig.add_subplot(111)
a.scatter(v, x, color='red')
a.set_title ("Scatter Plot)", fontsize=16)
a.set_ylabel("Y", fontsize=14)
a.set_xlabel("X", fontsize=14)
canvas = FigureCanvasTkAgg(fig, master=self.window)
canvas.get_tk_widget().pack()
canvas.draw()
window = Tk()
start = mclass(window)
window.mainloop()
如果有人能帮助我解决我的错误,我将不胜感激,谢谢!
【问题讨论】:
标签: python user-interface matplotlib tkinter scatter-plot