Переключение между кадрами в ткинтер - PullRequest
0 голосов
/ 13 октября 2018

Хотя я знаю, что люди задавали этот вопрос раньше, я попробовал методы на сообщениях и не удалось.Я пытаюсь переключаться между 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()

Проблема в том, что, когда я нажимаю кнопку, кажется, что она не переключается ни на один из других фреймов, хотя я думаю, что я все сделал правильно.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 13 октября 2018

Суть получения макета со сложенными фреймами состоит в том, чтобы фреймы располагались друг над другом.Вы можете добиться этого, создавая рамки в одном и том же месте.Чтобы наблюдать за операцией поднятия, вам нужно разместить виджет в каждом кадре.

Вот простой пример с кнопками управления, упакованными в рамку 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

Подробный пример переключения кадров и соответствующую информацию можно найти здесь Переключение междудва кадра в ткинтер

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...