python - 在 tkinter 中的帧之间切换
问题描述
虽然我知道以前有人问过这个问题,但是我尝试了帖子上的方法并没有成功。我试图通过单击按钮在 2 帧之间切换。到目前为止,这是我的代码:
from tkinter import *
window = Tk()
nframe = Frame(window,width = 100,height = 100)
nframe.pack()
conjframe = Frame(window,width = 100,height = 100)
transframe = Frame(window,width = 100,height = 100)
window.geometry("100x100")
def raisenframe():
nframe.tkraise()
def raiseconjframe():
conjframe.tkraise()
def raisetransframe():
transframe.tkraise()
def conj():
print("this is a conjugator")
conjframe.tkraise()
def trans():
print("this is a translator")
transframe.tkraise()
transframe.pack()
Label(conjframe,text = 'hola').pack()
conjugator = Button(nframe, text="Conjugator", command=lambda:raiseconjframe)
conjugator.pack()
translator = Button(nframe, text="Translator", command=lambda:raisetransframe)
translator.pack()
raisenframe()
window.mainloop()
问题是当我单击按钮时,它似乎没有切换到任何其他帧,尽管我认为我已经正确完成了所有操作。有人可以帮我吗?
解决方案
获得具有堆叠框架的布局的本质是让框架位于彼此之上。您可以通过在同一位置网格化框架来实现此目的。要观察 raise 操作,您需要在每个框架中放置一个小部件。
这是一个简单的示例,控制按钮包含在 ROOT 框架和两个堆叠的框架中,它们的内容在一个单独的框架中相互叠加。
import tkinter as tk
ROOT = tk.Tk()
# seperate frame to hold frames stacked on top of each other
stacking_frame = tk.Frame()
stacking_frame.pack()
# two stacked frames within the stacking frame
conj_frame = tk.Frame(master=stacking_frame)
conj_frame.grid(column=0, row=0)
trans_frame = tk.Frame(master=stacking_frame)
trans_frame.grid(column=0, row=0)
# example contents in each stacked frame
tk.Label(master=conj_frame,
text='Conj').grid()
tk.Label(master=trans_frame,
text='Trans').grid()
# buttons commands to alter stacking order
tk.Button(text="Raise Conjugator", command=conj_frame.tkraise).pack()
tk.Button(text="Raise Translator", command=trans_frame.tkraise).pack()
ROOT.mainloop()
可以在此处找到有关 tkinter 的有用介绍性信息https://tkdocs.com/tutorial/index.html
帧切换的详细示例和相关信息可以在这里找到 在tkinter中的两个帧之间切换
推荐阅读
- java - 如何使条形图透明
- ember.js - 要求覆盖 Ember.js 文件时,Visual Studio Code 终端冻结
- python-3.x - 如何在熊猫中找到一个列与另一个条件列的总和
- python - Docker 在运行 docker-compose 时以代码 0 退出
- foreign-keys - 在 heidisql 中添加外键时遇到问题
- logging - AEM 自定义错误日志未反映在日志支持下
- javascript - 在 node.js 中创建插入函数(postgresql)
- html - 一些 jpg 文件在上传文件后丢失了旋转信息
- sql-server - “管道的另一端没有进程”随机发生错误
- r - Matlab:绘制 3D 直方图