python - 为什么使用 tkinter tkraise 时帧不提升?

标签 python tkinter

import tkinter as tk

LARGE_FONT=("Verdana",12)

class myClass(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 = {}

        frame = StartPage(container,self,"startPage","visit page 1","pageone")
        frame2 = StartPage(container,self,"pageone","Go BAck","startPage")
        self.frames["startPage"]=frame
        self.frames["pageone"]=frame2

        frame.grid(row=0,column=0,sticky="nsew")

        self.show_frame("startPage")

    def show_frame(self,cont):
        print(cont)
        print(self.frames)
        print(self.frames[cont])
        frame = self.frames[cont]
        print(frame)
        frame.tkraise()

def qf(param):
    print(param)

class StartPage(tk.Frame):
    def __init__(self,parent,controller,lableName,butonName,visitToPage):
        tk.Frame.__init__(self,parent)
        label = tk.Label(self,text=lableName,font=LARGE_FONT)
        label.pack(pady=10,padx=10)
        button1 = tk.Button(self,text =butonName,command=lambda: controller.show_frame(visitToPage))
        button1.pack()



app = myClass()

app.mainloop()

我正在尝试使用一个类 StartPage 创建两个框架,因此我为第 1 帧的 StartPage 提供了参数 “startPage”“访问第 1 页”“pageone”,第 2 帧为 “pageone”“返回” ,"起始页", 但是通过按下按钮,即使参数对于函数 show_frame 来说是正确的,框架也不会切换。

最佳答案

它不起作用,因为您尚未将 pageone 框架放置在网格中。只需将此行放在frame.grid之后即可工作:

frame2.grid(row=0,column=0,sticky="nsew")

关于python - 为什么使用 tkinter tkraise 时帧不提升?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41918796/

相关文章:

python - sge-pygame 旋转父子 Sprite

python - 我想使用 Python 中的套接字编程流式传输网络摄像头

python - App Engine django 基本模型和 db.Model 之间的区别

python - 在 python 2.7 中将图像添加到 Tkinter 的文本小部件

python - lambda 与 tkinter 的工作方式很奇怪

python - 电子前沿基金会的猫笑话

python - 崇高 - ImportError : No module named

python - 如何获取绑定(bind)键而不在输入框中输入

python-3.x - 如何在 20 秒后重复使用 Pillow 在现有图像上创建新图像?

python - TKinter 更新图片列表