python figure函数 gui_python 在一个GUI内创建了2个figure,为什么只能显示第二个图?...
建議你把代碼格式化一下,編輯框上有代碼塊選項,選中代碼再點擊如下圖標就可以格式化。
說說這段代碼的問題。因為tk我沒怎么用過,說明如果有錯,幫忙指正。
def figure(self):
f1=Figure((4,3))
self.f11=f1.add_subplot(111)
self.canvas=FigureCanvasTkAgg(f1,self.root)
self.canvas.get_tk_widget().place(x=0,y=50)
f2=Figure((4,3))
self.f22=f2.add_subplot(111)
self.canvas=FigureCanvasTkAgg(f2,self.root)
self.canvas.get_tk_widget().place(x=400,y=50)
首先你要理解什么是canvas,它的英文解釋帆布、油畫布。可以理解為畫紙。梳理下上面的邏輯:創建一個名為f1的figure;
在f1中創建了名為f11的plot;
創建了名為canvas的畫布,并傳入名為f11為figure;
創建一個名為f2的figure;
在f1中創建了名為f22的plot;
創建了名為canvas的畫布,并傳入名為f22為figure;
canvas前后被賦值兩次,但canvas只能指向一張畫紙。指向了第二張必然失去對第一張的引用,第一張畫紙就被清理掉。畫紙上只能有一個figure,f1是掛在第一張上的,此時在f1中的f11上作畫,其實就相當于在空中揮筆,毫無痕跡。
修改之后的代碼是什么樣子,如下:
lass Ra:
def __init__(self):
self.root = Tk()
self.x = np.arange(0, 1, 0.01)
self.root.title('Ra')
self.root.geometry('800x400+300+100')
self.canvas = Canvas()
self.figure()
self.radio_button()
self.root.mainloop()
def figure(self):
f = Figure((8, 3))
self.plot1 = f.add_subplot(1, 2, 1)
self.plot2 = f.add_subplot(1, 2, 2)
self.canvas = FigureCanvasTkAgg(f, self.root)
self.canvas.get_tk_widget().place(x=10, y=50)
def radio_button(self):
var = StringVar()
r1 = Radiobutton(self.root, text='sin', variable=var, value='A', command=self.sin)
r1.place(x=10, y=10)
r2 = Radiobutton(self.root, text='cos', variable=var, value='B', command=self.cos)
r2.place(x=150, y=10)
def sin(self):
self.plot1.clear()
self.y = np.sin(self.x)
self.plot1.plot(self.x, self.y)
self.canvas.draw()
def cos(self):
self.plot2.clear()
self.yy = np.cos(self.x)
self.plot2.plot(self.x,self.yy)
self.canvas.draw()
if __name__=='__main__':
ra=Ra()
主要看其中一段
def figure(self):
f = Figure((8, 3))
self.plot1 = f.add_subplot(1, 2, 1)
self.plot2 = f.add_subplot(1, 2, 2)
self.canvas = FigureCanvasTkAgg(f, self.root)
self.canvas.get_tk_widget().place(x=10, y=50)
首先創建了名為f的figure,通過add_subplot在其中畫了兩個plot,布局為一行兩列。然后將這個figure附在了某張畫布上。此時只有一個canvas,作出的畫就可以展示了。
總結
以上是生活随笔為你收集整理的python figure函数 gui_python 在一个GUI内创建了2个figure,为什么只能显示第二个图?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DDoS平台(ddos哪个平台有)
- 下一篇: 腾讯面试编程题python_腾讯面试官出