销毁不同框架python tkinter中的标签

斯蒂芬·萨兰(Stefan Saran)

我试图用tkinter制作一个在同一窗口中显示不同框架的应用程序,然后用一个按钮进入这些框架,我遇到了一个问题,当您单击该按钮时,它会做应该做的事情,但是在其中存在空白中间是不可见的标签,我该如何将小部件更改为仅一帧,然后通过按钮调用它并在窗口上更新该帧。我希望我能明确我的任务,任何帮助都可以。这是我的代码

import tkinter as tk

app = tk.Tk()

app1 = tk.Frame(app)
app1.grid()

app2 = tk.Frame(app)
app2.grid()

app3 = tk.Frame(app)
app3.grid()

text1 = tk.Label(app1, text="Home")
text1.grid()

text2 = tk.Label(app2, text="Home2")

app3.test = True
app3_label = tk.Label(app3, text="app3")
app3_label.grid()

app4 = tk.Frame(app)

app4.test = False
app4_label = tk.Label(app4, text="app4")
app4_label.grid()

def toggle():
    if(app3.test):
        app3.test = False
        app3.grid_forget()
        app4.test = True
        app4.grid()
        text2.grid()
    else:
        app4.test = False
        app4.grid_forget()
        app3.test = True
        app3.grid()
        text2.grid_forget()

button1 = tk.Button(app1, text="click", command=toggle)
button1.grid(row=0, column=2)

app.mainloop()
迈克-SMT
  1. 您使用不grid()正确。如果您希望事情始终保持正确的顺序,则网格需要知道行和列。无需提供grid()行/列,它将仅适用于下一个可用行。然后,当您使用grid_forget()然后再次使用grid()时,它将保留该新行,并且在不应该保留时始终位于下一行。

  2. “那是不可见的标签”。这是不正确的。标签已被删除,grid_forget()不仅不可见。造成这种差距的原因是,一旦您删除了小部件,框架便保持其格式。

  3. 您使事情变得比在切换功能中所需的事情更加复杂。这里不需要多个true / false变量,您应该在框架上使用grid_forget()而不是框架中的小部件。

尝试以下方法:

import tkinter as tk


app = tk.Tk()

toggle = False
app1 = tk.Frame(app)
app2 = tk.Frame(app)
app3 = tk.Frame(app)
app4 = tk.Frame(app)
app1.grid()
app2.grid()
app3.grid()

tk.Label(app1, text="Home").grid()
tk.Label(app2, text="Home2").grid()
tk.Label(app3, text="app3").grid()
tk.Label(app4, text="app4").grid()


def toggle():
    global toggle
    if toggle:
        app3.grid_forget()
        app4.grid()
        toggle = False

    else:
        app4.grid_forget()
        app3.grid()
        toggle = True


tk.Button(app1, text="click", command=toggle).grid(row=0, column=2)
app.mainloop()

如果您正在寻找一种更动态的方法来处理许多帧,则可以使用列表保存所有帧,然后在该列表上进行迭代。

import tkinter as tk


app = tk.Tk()


frame_list = []
frame_ndex = 0

for i in range(4):
    frame_list.append(tk.Frame(app))
    tk.Label(frame_list[-1], text='Frame {}'.format(i+1)).grid(row=1, column=0)

frame_list[frame_ndex].grid(row=1, column=0)


def toggle():
    global frame_ndex
    frame_list[frame_ndex].grid_forget()
    if frame_ndex+1 == len(frame_list):
        frame_ndex = 0
        frame_list[frame_ndex].grid(row=1, column=0)
    else:
        frame_ndex += 1
        frame_list[frame_ndex].grid(row=1, column=0)


tk.Button(app, text="click", command=toggle).grid(row=0, column=0)
app.mainloop()

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Tkinter Python销毁标签

来自分类Dev

如何刷新或销毁在 tkinter python 画布中创建的框架?

来自分类Dev

从Tkinter中的For循环返回不同的标签(python)

来自分类Dev

从Tkinter中的For循环返回不同的标签(python)

来自分类Dev

在Tkinter中包装标签时,框架消失

来自分类Dev

Python tkinter:不断更新框架中的标签

来自分类Dev

Python 3,从不同的函数更新 Tkinter 中的标签?

来自分类Dev

Python Tkinter从标签中删除/删除图像

来自分类Dev

在Python TkInter中更新标签文本

来自分类Dev

在python tkinter中更新标签变量

来自分类Dev

如何使用Tkinter在python中刷新标签

来自分类Dev

如何在Tkinter python中替换标签?

来自分类Dev

对于标签Python Tkinter中的声明

来自分类Dev

我可以在tkinter中编辑功能不同的标签框架吗?

来自分类Dev

Tkinter:中心标签在固定尺寸的框架中吗?

来自分类Dev

如何更新 tkinter 子框架类中的标签文本

来自分类Dev

Emacs不同框架中的不同python venvs

来自分类Dev

tkinter在标签框架中添加小部件中断标签框架大小

来自分类Dev

如何从框架中删除所有标签但保留菜单/按钮?tkinter,Python

来自分类Dev

python tkinter销毁顶层

来自分类Dev

Python TKinter在文本小部件中获得clicked标签

来自分类Dev

Tkinter,canvas.rectangle中的标签/文本[python]

来自分类Dev

Python Tkinter。如何通过标签中的按钮存储条目

来自分类Dev

如何使用Python在Tkinter标签中打印变量?

来自分类Dev

如何在python中使用Tkinter遍历标签中的列表?

来自分类Dev

在tkinter python中的输入框旁边打包标签

来自分类Dev

如何更正此函数以在Tkinter Python中创建标签?

来自分类Dev

如何在tkinter和python中刷新标签

来自分类Dev

在tkinter标签Python中显示平方根符号

Related 相关文章

  1. 1

    Tkinter Python销毁标签

  2. 2

    如何刷新或销毁在 tkinter python 画布中创建的框架?

  3. 3

    从Tkinter中的For循环返回不同的标签(python)

  4. 4

    从Tkinter中的For循环返回不同的标签(python)

  5. 5

    在Tkinter中包装标签时,框架消失

  6. 6

    Python tkinter:不断更新框架中的标签

  7. 7

    Python 3,从不同的函数更新 Tkinter 中的标签?

  8. 8

    Python Tkinter从标签中删除/删除图像

  9. 9

    在Python TkInter中更新标签文本

  10. 10

    在python tkinter中更新标签变量

  11. 11

    如何使用Tkinter在python中刷新标签

  12. 12

    如何在Tkinter python中替换标签?

  13. 13

    对于标签Python Tkinter中的声明

  14. 14

    我可以在tkinter中编辑功能不同的标签框架吗?

  15. 15

    Tkinter:中心标签在固定尺寸的框架中吗?

  16. 16

    如何更新 tkinter 子框架类中的标签文本

  17. 17

    Emacs不同框架中的不同python venvs

  18. 18

    tkinter在标签框架中添加小部件中断标签框架大小

  19. 19

    如何从框架中删除所有标签但保留菜单/按钮?tkinter,Python

  20. 20

    python tkinter销毁顶层

  21. 21

    Python TKinter在文本小部件中获得clicked标签

  22. 22

    Tkinter,canvas.rectangle中的标签/文本[python]

  23. 23

    Python Tkinter。如何通过标签中的按钮存储条目

  24. 24

    如何使用Python在Tkinter标签中打印变量?

  25. 25

    如何在python中使用Tkinter遍历标签中的列表?

  26. 26

    在tkinter python中的输入框旁边打包标签

  27. 27

    如何更正此函数以在Tkinter Python中创建标签?

  28. 28

    如何在tkinter和python中刷新标签

  29. 29

    在tkinter标签Python中显示平方根符号

热门标签

归档