Jump to content

Python Kivy Modularização py e kv


fenbasso
Ir para a Solução Solucionado por Thanael,

Postagens Recomendadas

Boa tarde amigos,

Estou migrando de linguagem e aprendendo Python.

Estou criando um sisteminha para aprendizado e estou com dificuldades na modularização do mesmo, peço ajuda por favor.

A ideia inicial seria..

Criar login.py e login.kv (já estão criadas)

Essa tela irá acionar a tela principal do sistema que seria principal.py e principal.kv. (Estou usando App, Screen e ScreenManager para fazer o controle e transição das telas).

Fiz o import da principal.py na tela login.py e fiz o load da principal.kv na login.py também. Desta forma estou conseguindo fazer a transição para a tela principal.

Agora vem o X da questão. Quero criar as demais telas que o sistema terá e quem terá acesso a estas telas para chamá-las seria o principal.py.

Pensando assim na tela principal.py basta eu fazer o import e load dos arquivos py e kv da tela tela1 (por exemplo) que irei importar, mas o que não estou entendendo é, se na tela1 eu tenho um botão com o evento btn1Click, este evento deveria estar declarado na tela1 e o arquivo tela1.kv chamar este evento diretamente. Não estou conseguindo fazer sem ter de criar um evento na principal.py e dentro chamar o btn1.click da tela1.py.

Ficaria algo assim...

import tela1

...load(tela1.kv)

class Principal(self):
	def botao1Click:
    	tela1.btn1Click();
tela1.kv

<Tela1>
	BoxLayout:
    	...
      	Button:
          text: 'Botão 1'
          on_release: root.botao1Click()

Existe outra forma de resolver isso?

Pergunto isso, pois estou vindo da linguagem Delphi e nele a gente consegue deixar tudo modularizado e o código totalmente separado. Devo estar fazendo confusão aqui no Python.

Se puderem me ajudar por favor.

Obrigado

  • Curtir 2
Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed

Olá @fenbasso.

Infelizmente não conheço muito sobre essa questão de interfaces com Python.

Porém, se a dúvida é sobre Modularização, e possível, sim, modular seu código.

Recomendo dar uma olhada nesses artigos para ter uma ideia de como realizar essa modularização e com isso adaptar seu código para possibilitar a criação dos módulos e etc.

Neles tem alguns exemplos práticos que pode lhe auxiliar.

Exemplo: (Imagem do 1° Artigo)
image.png

 

Espero que isso lhe dê uma base para conseguir modularizar seu código. 

  • Curtir 1
Link to comment
Compartilhe em outros sites

@Thanael

Boa tarde meu amigo, tudo bem?

Obrigado pela reposta!

Essa parte de import estou conseguindo usar e realmente funciona certinho.

Estou com dúvida em relação a ter outro arquivos .kv. Como seria a declaração e chamada deste demais arquivos kv no python. Ex:
 

Tenho os arquivos tela1.py, tela2.py e tela3.py E consecutivamente tenho as interfaces tela1.kv, tela2.kv e tela3.kv

tela1.py associada à tela1.kv

- Ela faz o import e chama a tela2.py e tela2.kv

tela2.pyv associada à tela2.kv

- Ela faz o import chama a tela3.py e tela3.kv

 

Preciso saber como ficaria essa lógica do import e bem como a chamada das telas.

 

Se conseguir me ajudar por favor

  • Curtir 2
Link to comment
Compartilhe em outros sites

  • Pessoal da TecnoSpeed
  • Solução

Olá @fenbasso.

Não entendo muito bem como ocorre essa chamada do arquivo .kv. 

Pesquisando brevemente sobre o tema encontrei algo que possa lhe ajudar...

from kivy.lang import Builder
Builder.load_file('kivi.kv')

Aí basta passar o caminho de seus arquivos.
Exemplo: tela2.kv, tela3.kv e etc.

Recomendo olhar a própria documentação da biblioteca sobre isso em:

Kivy - Builder tem uma parte específica que explica sobre isso

image.png

 

Enfim, recomendo ir testando e procurando para verificar como resolver isso, por não conhecer a biblioteca infelizmente não consigo ajudar de forma mais precisa.

  • Curtir 1
  • Ajudou! 1
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...