每个人的起始页都可以正常工作。但是,我使用 change_img() 将框架更改为 Pageone。Pageone 没有出现在屏幕上。我通过单击打印框架右上角的正方形放大了整个屏幕。Pageone 出现在底部。
不知道为什么Pageone的文字和按钮没有出现在框架的顶部请帮忙。
import sys
import serial
import threading
import queue
import tkinter as tk
#import tkinter
import tkinter.ttk as ttk
import time
import tkinter.messagebox
from PIL import ImageTk, Image
class StartApp(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self._frame = None
self.switch_frame(None, StartPage)
self.geometry("1500x950+100+100")
self.resizable(width=True, height=True)
def switch_frame(self, Canvas, frame_class):
if Canvas is not None:
Canvas.delete("all")
new_frame = frame_class(self)
if self._frame is not None:
print( '{} destory'.format(self._frame))
self._frame.destroy()
self._frame = new_frame
print(new_frame)
self._frame.pack()
class StartPage(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
self.no= 10
self.is_charged= False
#self.img = ImageTk.PhotoImage(Image.open("images/10_image.png"))
#n can't be zero, recommend 0.25-4
n = 3
self.image = Image.open("images/10_image.png")
[imageSizeWidth, imageSizeHeight] = self.image.size
newImageSizeWidth = int(imageSizeWidth * n)
if 1:
newImageSizeHeight = int(imageSizeHeight*n)
else:
newImageSizeHeight = int(imageSizeHeight/n)
self.image = self.image.resize((newImageSizeWidth, newImageSizeHeight), Image.ANTIALIAS)
self.img = ImageTk.PhotoImage(self.image)
self.Canvas1 = tk.Canvas(width = 1500, height = 950)
#self.Canvas1.config(bg="blue")
self.Canvas1.pack()
self.Canvas1.create_image(1500/2,950/2,image = self.img)
# Canvas1.config(bg="blue",width = newImageSizeWidth, height = newImageSizeHeight)
#Canvas1.config(bg="blue")
#Canvas1.pack(side="left", anchor="ne")
# images
self.my_images = []
self.my_images.append(tk.PhotoImage(file = "images/10_image.png"))
self.my_images.append(tk.PhotoImage(file = "images/11_image.png"))
self.my_images.append(tk.PhotoImage(file = "images/12_image.png"))
self.my_image_number = 0
# set first image on canvas
self.image_on_canvas = self.Canvas1.create_image(0, 0, anchor = "nw", image = self.my_images[self.my_image_number])
self.after(500, self.change_img)
def change_img(self):
# next image
self.my_image_number += 1
# return to first image
if self.my_image_number == len(self.my_images):
self.my_image_number = 0
self.master.switch_frame(self.Canvas1, PageOne)
# change image
else:
self.Canvas1.itemconfig(self.image_on_canvas, image = self.my_images[self.my_image_number])
self.after(500, self.change_img)
class PageOne(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
tk.Label(self, text="This is page one").pack(side="top")
tk.Button(self, text="Return to start page",
command=lambda: master.switch_frame(None, StartPage)).pack()
class PageTwo(tk.Frame):
def __init__(self, master):
tk.Frame.__init__(self, master)
tk.Label(self, text="This is page two").pac`enter code here`k(side="top", fill="x", pady=10)
tk.Button(self, text="Return to start page",
command=lambda: master.switch_frame(None, StartPage)).pack()
if __name__ == "__main__":
root= StartApp()
root.mainloop()