我有一个tkinter窗口,在第一页上,我嵌入了matplotlib图,也使用tkinter条目小部件来获取用户值。我能够从用户值中提取内容,但是我想保留已经绘制的内容。同时删除最近绘制的线条。
我对OOP还是陌生的,因此通过教程和这里的帮助我迷迷糊糊了。任何建议或帮助将不胜感激。
import matplotlib
matplotlib.use('TkAgg')
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
from matplotlib.figure import Figure
from matplotlib import style
import tkinter as tk
from tkinter import ttk
from tkinter import *
LARGE_FONT = ('Verdana',12)
style.use('ggplot')
from matplotlib import pyplot as plt
class Stress(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
tk.Tk.iconbitmap(self,default='icon1.ico')
tk.Tk.wm_title(self,'Stress Members')
container = tk.Frame(self)
container.pack(side='top', fill='both', expand='False')
container.grid_rowconfigure(0,weight=1)
container.grid_columnconfigure(0,weight=1)
self.frames ={}
frame= PageOne(container,self)
self.frames[PageOne] = frame
frame.grid(row=0, column=0, sticky='nsew')
def show_frame(self,cont):
frame=self.frames[cont]
frame.tkraise()
class PageOne(tk.Frame):
def __init__(self,parent,controller):
tk.Frame.__init__(self,parent)
label = tk.Label(self,text='Experiment', font = LARGE_FONT)
label.pack(pady=10,padx=10)
self.adding_widgets()
button2= ttk.Button(self,text='Validate', command=self.draw)
button2.pack()
button3= ttk.Button(self,text='Erase', command=self.dlet)
button3.pack()
self.f1= Figure(figsize=(5,5),dpi=100)
self.b=self.f1.add_subplot(1,1,1)
self.canvas = FigureCanvasTkAgg(self.f1, self)
self.canvas.draw()
self.canvas.get_tk_widget().pack(side=tk.TOP,fill=tk.BOTH,expand=True)
self.line, = self.b.plot(range(5)) ## problem here as well, want empty/blank page but have to do this to make it work
## dont know how to declare a blank empty page
def adding_widgets(self,*args):
labfram=ttk.LabelFrame(self,width=100,height=100,text='Enter Member Coordinates')
labfram.pack()
l1=ttk.Label(labfram,text='x0')
l1.pack(side='left')
self.e1=Entry(labfram,width=10,)
self.e1.pack(side='left')
l2=ttk.Label(labfram,text='y0')
l2.pack(side='left')
self.e2=Entry(labfram,width=10)
self.e2.pack(side='left')
l3=ttk.Label(labfram,text='x1')
l3.pack(side='left')
self.e3=Entry(labfram,width=10)
self.e3.pack(side='left')
l4=ttk.Label(labfram,text='y1')
l4.pack(side='left')
self.e4=Entry(labfram,width=10)
self.e4.pack(side='left')
def draw(self):
print("x0 %s\ny0 %s\nx1 %s\ny1 %s" % (self.e1.get(), self.e2.get(),self.e3.get(),self.e4.get()))
self.line.set_xdata([float(self.e1.get()), float(self.e3.get())])
self.line.set_ydata([float(self.e2.get()),float(self.e4.get())])
self.canvas.draw()
## Above code draws a line but I want to keep it so user can draw one line after the other
def dlet(self):
# want to delete the most recent line drawn here
return None
app = Stress()
app.mainloop()
答案 0 :(得分:0)
通过研究和测试,我现在能够解决ike,现在可以画一条线,以及如何删除最新的线
containers:
# Runs calico-node container on each Kubernetes node. This
# container programs network policy and routes on each
# host.
- name: calico-node
image: calico/node:v3.16.1
ports:
- containerPort: 9090