Aplicativo Tkinter para alternar entre diferentes quadros de página
Pré-requisitos: GUI Python - tkinter
Às vezes, precisamos criar um aplicativo com várias caixas de diálogo pop-up, ou seja, quadros de página. Aqui está um processo passo a passo para criar vários quadros de página Tkinter e vinculá-los! Isso pode ser usado como um padrão para aplicativos GUI python mais complexos, como a criação de interfaces para laboratórios virtuais para experimentos, salas de aula, etc.
Aqui estão as etapas:
- Crie três páginas diferentes. Aqui temos três páginas diferentes, a página inicial como a página inicial, a página um e a página dois.
- Crie um contêiner para cada quadro de página.
- Temos quatro classes. A primeira é a classe tkinterApp, onde inicializamos os três quadros e definimos uma função show_frame que é chamada toda vez que o usuário clica em um botão.
- O StartPage é simples com dois botões para ir para a Página 1 e a Página 2.
- A página 1 tem dois botões, um para a página 2 e outro para retornar à página inicial.
- A página 2 também possui dois botões, um para a página 1 e outros para retornar ao StartPage.
- Esta é uma aplicação simplista de navegação entre frames do Tkinter.
- Isso pode ser usado como um padrão para aplicativos mais complexos e vários recursos podem ser adicionados.
O aplicativo começa com o StartPage como a primeira página, conforme mostrado na classe tkinterApp. Aqui no StartApp, existem dois botões. Clicar em um botão leva você para a respectiva Página. Você pode adicionar imagens e gráficos a essas páginas e adicionar funcionalidades complexas. As páginas também possuem dois botões. Cada vez que um botão é pressionado, show_frame é chamado, o que exibe a respectiva Página.
Abaixo está a implementação.
import
tkinter as tk
from
tkinter
import
ttk
LARGEFONT
=
(
"Verdana"
,
35
)
class
tkinterApp(tk.Tk):
def
__init__(
self
,
*
args,
*
*
kwargs):
tk.Tk.__init__(
self
,
*
args,
*
*
kwargs)
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
=
{}
for
F
in
(StartPage, Page1, Page2):
frame
=
F(container,
self
)
self
.frames[F]
=
frame
frame.grid(row
=
0
, column
=
0
, sticky
=
"nsew"
)
self
.show_frame(StartPage)
def
show_frame(
self
, cont):
frame
=
self
.frames[cont]
frame.tkraise()
class
StartPage(tk.Frame):
def
__init__(
self
, parent, controller):
tk.Frame.__init__(
self
, parent)
label
=
ttk.Label(
self
, text
=
"Startpage"
, font
=
LARGEFONT)
label.grid(row
=
0
, column
=
4
, padx
=
10
, pady
=
10
)
button1
=
ttk.Button(
self
, text
=
"Page 1"
,
command
=
lambda
: controller.show_frame(Page1))
button1.grid(row
=
1
, column
=
1
, padx
=
10
, pady
=
10
)
button2
=
ttk.Button(
self
, text
=
"Page 2"
,
command
=
lambda
: controller.show_frame(Page2))
button2.grid(row
=
2
, column
=
1
, padx
=
10
, pady
=
10
)
class
Page1(tk.Frame):
def
__init__(
self
, parent, controller):
tk.Frame.__init__(
self
, parent)
label
=
ttk.Label(
self
, text
=
"Page 1"
, font
=
LARGEFONT)
label.grid(row
=
0
, column
=
4
, padx
=
10
, pady
=
10
)
button1
=
ttk.Button(
self
, text
=
"StartPage"
,
command
=
lambda
: controller.show_frame(StartPage))
button1.grid(row
=
1
, column
=
1
, padx
=
10
, pady
=
10
)
button2
=
ttk.Button(
self
, text
=
"Page 2"
,
command
=
lambda
: controller.show_frame(Page2))
button2.grid(row
=
2
, column
=
1
, padx
=
10
, pady
=
10
)
class
Page2(tk.Frame):
def
__init__(
self
, parent, controller):
tk.Frame.__init__(
self
, parent)
label
=
ttk.Label(
self
, text
=
"Page 2"
, font
=
LARGEFONT)
label.grid(row
=
0
, column
=
4
, padx
=
10
, pady
=
10
)
button1
=
ttk.Button(
self
, text
=
"Page 1"
,
command
=
lambda
: controller.show_frame(Page1))
button1.grid(row
=
1
, column
=
1
, padx
=
10
, pady
=
10
)
button2
=
ttk.Button(
self
, text
=
"Startpage"
,
command
=
lambda
: controller.show_frame(StartPage))
button2.grid(row
=
2
, column
=
1
, padx
=
10
, pady
=
10
)
app
=
tkinterApp()
app.mainloop()
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva