哈囉大家好
想請問一個問題
就是我用tk做了兩頁frame(StartPage, ThreePage)
然後我做了兩個按鈕 一個從StartPage換到ThreePage 另一個是在StartPage貼一張圖
我希望當我按了貼圖的按鈕後 再換到ThreePage時 圖會消失
接著再按home按鈕返回時 圖會直接再出現
但現在這個寫法是 當我按了按鈕以後 圖就永遠在那裡 換到ThreePage也依舊在那
我覺得應該是label那邊不能用root 但我用self他會錯誤
想請問該怎麼做呢?
謝謝
import os
import sys
import matplotlib
matplotlib.use("TkAgg")
import tkinter as tk
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,
NavigationToolbar2TkAgg
from matplotlib.figure import Figure
from PIL import Image, ImageTk
#### Change working dir ####
pathProg = os.getcwd()
os.chdir(pathProg)
def on_Plot():
global img1
global La
img1 = ImageTk.PhotoImage(file='Hey.jpg')
La = tk.Label(root, text="abc", image=img1, bg='gray')
La.place(x=200, y=150, width=100, height=100)
La.update_idletasks()
class Application(tk.Tk):
def __init__(self):
super().__init__()
self.wm_title('Hello')
self.geometry('500x500')
container = tk.Frame(self)
container.pack(side="top", fill="both", expand = True)
container.grid_rowconfigure(0, weight=1)
container.grid_columnconfigure(0, weight=1)
self.frames = {}
for F in (StartPage, PageThree):
frame = F(container, self)
self.frames[F] = frame
frame.grid(row=0, column=0, sticky="nsew")
self.show_frame(StartPage)
def show_frame(self, cont):
frame = self.frames[cont]
frame.tkraise()
class StartPage(tk.Frame):
def __init__(self, parent, root):
super().__init__(parent)
butt3 = tk.Button(self, text="Page3", command = lambda:
root.show_frame(PageThree))
butt3.place(x=100, y=400, width=150, height=80)
butt4 = tk.Button(self, text="Plot", command = on_Plot)
butt4.place(x=300, y=400, width=150, height=80)
class PageThree(tk.Frame):
def __init__(self, parent, root):
super().__init__(parent)
button1 = tk.Button(self, text="Home", command=lambda:
root.show_frame(StartPage)).pack()
root = Application()
root.mainloop()