【问题标题】:Python 3.4 -tkinter - How to raise a frame on a window that has multiple framesPython 3.4 -tkinter - 如何在具有多个框架的窗口上提升框架
【发布时间】:2015-12-22 10:49:28
【问题描述】:

我正在尝试为一个程序制作一个小 GUI。我正在使用网格将一些框架放在根窗口中。我有 3 帧:通常,第 1 帧和第 2 帧位于 row=0 column=0 (frame1) 和 row=0 column=1。默认情况下不显示第 3 帧。在 frame1 我有两个按钮:想法是,通过按下按钮,在 frame2 和 frame 3 之间切换,保持 frame1 可见。这是我写的代码:

from tkinter import *

def hello():
    frame2.tkraise()
    print('hello')

def world():
    frame3.tkraise()
    print('world')

root=Tk()

frame1=Frame(root)
frame2=Frame(root)
frame3=Frame(root)

frame1.grid(row=0,column=0,rowspan=2)
frame2.grid(row=0,column=1,rowspan=2)

tag1=Label(frame2,text='hello')
tag2=Label(frame3,text='world')

tag1.grid()
tag2.grid()

press1=Button(frame1,text='hello',command=hello)
press2=Button(frame1,text='world',command=world)

press1.grid(row=0)
press2.grid(row=1)

root.mainloop()

现在,如果我单击“press1”或“press2”,则会调用相应的函数(我可以在终端上看到相应的打印“hello”和“world”),所以它们正在工作,但它没有改变框架。我错过了什么?

【问题讨论】:

    标签: python tkinter frames


    【解决方案1】:

    您永远不会调用 frame3.grid(...),因此 frame3 永远不会可见。

    【讨论】:

    • 天哪,我瞎了!我总是忘记声明 grid 或 pack :D 谢谢你的回答,现在它工作得很好。顺便说一句,我不知道这是否是一个约定。无论如何,我在标题中添加了 [SOLVED],所以其他人知道问题确实已经解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    相关资源
    最近更新 更多