我的画面并排显示。我想在顶部显示一个并通过按钮切换它们

问题描述 投票:-2回答:1

我使用tkinter,每个帧只有1个图像,1个标签和1个按钮(从一帧到另一帧切换)它们都是并排显示的。标签是我单击按钮时唯一更改的元素。任何人都可以帮我把其中一个放在最上面吗?

这是我的代码

import tkinter as tk
from tkinter import ttk
from PIL import Image, ImageTk

LARGE_FONT = ("Verdana", 12)
class main(tk.Tk):

    def __init__(self):

        tk.Tk.__init__(self)
        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, Pageone):

            frame = F(parent= container, controller= 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, controller):
        tk.Frame.__init__(self, parent)
        Label = tk.Label(self, text= "that's the first frame", font = LARGE_FONT)
        Label.pack(pady=10, padx=10)

        Button= ttk.Button(text= "visit page 1", command= lambda: controller.show_frame(Pageone))
        Button.pack()
        image = Image.open(r'/Users/me/Documents/pythonfolder/kushina.jpg')
        image.thumbnail((300,300), Image.ANTIALIAS)
        photo = ImageTk.PhotoImage(image)
        Label_image = tk.Label(image=photo)
        Label_image.image = photo
        Label_image.pack()



class Pageone(tk.Frame):

    def __init__(self, parent, controller):
        tk.Frame.__init__(self, parent)

        Label = tk.Label(self, text= "that's the second frame", font = LARGE_FONT)
        Label.pack(pady=10, padx=10)

        Button= ttk.Button(text= "back to home", command= lambda: controller.show_frame(StartPage))
        Button.pack()
        image = Image.open(r'/Users/me/Documents/pythonfolder/kushina3.jpg')
        image.thumbnail((300,300), Image.ANTIALIAS)
        photo = ImageTk.PhotoImage(image)
        Label_image = tk.Label(image=photo)
        Label_image.image = photo
        Label_image.pack()

app = main()
app.mainloop()
python tkinter
1个回答
1
投票

将父级传递给您的窗口小部件启动,或者默认情况下,它们将被放置在根窗口Tk实例中。更换:

Button= ttk.Button(text= "visit page 1", ...)

有:

Button = ttk.Button(self, text= "visit page 1", ...)
© www.soinside.com 2019 - 2024. All rights reserved.