Ir para conteúdo
Fórum Script Brasil
  • 0

Gerenciador de tela em python


J. Víctor

Pergunta

Quero criar um gerenciador de telas em python. Um menu com opções de telas pra ir, e em cada tela uma opção de voltar ao menu. Se colocar as classes em um mesmo arquivo não terei problema, mas se eu tento modularizar e distribuir as classes em arquivos, não consigo importar a função 'main()' em PrimeiraTela, por exemplo. Cada tela está em um uma classe diferente e em um arquivo diferente, quando tento voltar ao menu vai ocorrer o erro de círculo. Qual a melhor forma de resolver? Segue o código de cada arquivo:

Main

from tkinter import *
from primeira import *
class main():
    def __init__(self):
        self.master = Tk()

        # Configuração da janela principal
        self.master.title('Janela Principal')
        self.master.geometry('480x240')
        self.master.configure(borderwidth=4, background='white')

        self.button = Button(self.master, text='tela 1', command= lambda: self.evento())
        self.button.pack(side='left', fill='x')

        self.master.mainloop()

    def evento(self):
        self.master.destroy()
        FirstWindow()
main()

Primeira tela (em outro arquivo)

from tkinter import *
from main import main
class FirstWindow():
    def __init__(self, master=None):
        master = Tk()
        self.master = master

        # Configuração da janela principal
        self.master.title('Primeira Janela')
        self.master.configure(background='green')
        self.master.geometry('480x240')

        self.button = Button(master, text='menu', command= lambda: self.irMain())
        self.button.pack(side='left', fill='x', expand=True)
        master.mainloop()

    def irMain(self):
        self.master.destroy()
        main()

 

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 1

tem algumas formas de você alterar a janela, a primeira é o seguinte

você tem todas as janelas, só que elas estão uma em cima da outra, sendo que a primeira esconde a segunda

se você quizer que a segunda fica a frente, tem o comando raize(não lembro exatamente como usar, vale a pesquisa)

 

a segunda forma é esquecer a janela, tk tem 3 gerenciadores, pack, grid, place

e você vai agrupando usando estes gerenciadores, você tem o comando foget(novamente não lembro exatamente como usar)

forget vai retirar a janela de dentro do gerenciador, e ai ela desaparece dando lugar para alguma outra coisa que você queira por amostra

Link para o comentário
Compartilhar em outros sites

  • 0

Certo, mas sem esconder a tela eu consigo?

Se eu conseguir esconder, e ao acionar um botão na primeira tela eu consiga retornar uma string pra main, também já vai resolver meu problema, mas não estou conseguindo fazer isso também

Você tem alguma ideia de como retornar uma string pra main quando acionar um botão na primeira tela?

Link para o comentário
Compartilhar em outros sites

  • 0

só armazenar em uma variavel, o script é um só então as variaveis vão estar disponiveis em todo o programa

 

esta bagunçado, mas neste programa que fiz ele lida com janelas, uso para fazer aparecer uma calculadora e o resultado do calculo é colocado em outro campo do programa

https://github.com/elton1013/dro_fresadora

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...