variavel não fixa valor passado pela função no Python
Galera, estou atribuindo valor 1 ou 2 via função, para variável formula, pra poder fazer um if, porém está ficando só com o valor que usei lá em cima para declarar, já tentei declarar ela no MyBoxLayout.
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
formula = 0
class MyBoxLayout(BoxLayout):
def horas(self):
formula= 1
print(formula)
def minutos(self):
formula= 2
print(formula)
def calcular(self):
if formula == 1:
volume=float(self.ids.vol_input.text)
tempo=float(self.ids.tempo_input.text)
resultado_macro = float((volume) / (3 * tempo))
resultado_micro= float (volume/tempo)
self.ids.label_resultado.text = (''Resultado é {:.2f} em Macrogotas e {:.2f} em Microgotas''.format(resultado_macro, resultado_micro))
print(formula)
else:
volume = float(self.ids.vol_input.text)
tempo = float(self.ids.tempo_input.text)
resultado_macro = float(volume * 20/tempo)
resultado_micro = float(volume * 60 / tempo)
self.ids.label_resultado.text = (''Resultado é {:.2f} em Macrogotas e {:.2f} em Microgotas''.format(resultado_macro, resultado_micro))
print(formula)
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
formula = 0
class MyBoxLayout(BoxLayout):
def horas(self):
formula= 1
print(formula)
def minutos(self):
formula= 2
print(formula)
def calcular(self):
if formula == 1:
volume=float(self.ids.vol_input.text)
tempo=float(self.ids.tempo_input.text)
resultado_macro = float((volume) / (3 * tempo))
resultado_micro= float (volume/tempo)
self.ids.label_resultado.text = (''Resultado é {:.2f} em Macrogotas e {:.2f} em Microgotas''.format(resultado_macro, resultado_micro))
print(formula)
else:
volume = float(self.ids.vol_input.text)
tempo = float(self.ids.tempo_input.text)
resultado_macro = float(volume * 20/tempo)
resultado_micro = float(volume * 60 / tempo)
self.ids.label_resultado.text = (''Resultado é {:.2f} em Macrogotas e {:.2f} em Microgotas''.format(resultado_macro, resultado_micro))
print(formula)
Iury
Curtidas 0
Respostas
Lucas Bazan
09/01/2023
Bom dia, amigo! Você está usando a classe da maneira errada :(
A classe precisa ter um método construtor para capturar os atributos para posteriormente utilizar nos métodos (funções dentro da classe), por exemplo:
Recomendo dar uma revisada nesse artigo sobre a introdução em classes e métodos -> https://www.devmedia.com.br/como-criar-minha-primeira-classe-em-python/38912
Abraços xD
A classe precisa ter um método construtor para capturar os atributos para posteriormente utilizar nos métodos (funções dentro da classe), por exemplo:
class MyBoxLayout(BoxLayout): def __init__(self, formula=0): self.formula = formula def calcular(self): if self.formula == 1: volume=float(self.ids.vol_input.text) tempo=float(self.ids.tempo_input.text) resultado_macro = float((volume) / (3 * tempo)) resultado_micro= float (volume/tempo) self.ids.label_resultado.text = (''Resultado é {:.2f} em Macrogotas e {:.2f} em Microgotas''.format(resultado_macro, resultado_micro)) print(self.formula) else: volume = float(self.ids.vol_input.text) tempo = float(self.ids.tempo_input.text) resultado_macro = float(volume * 20/tempo) resultado_micro = float(volume * 60 / tempo) self.ids.label_resultado.text = (''Resultado é {:.2f} em Macrogotas e {:.2f} em Microgotas''.format(resultado_macro, resultado_micro)) print(self.formula) MyBoxLayout(1).calcular() MyBoxLayout(2).calcular()
Recomendo dar uma revisada nesse artigo sobre a introdução em classes e métodos -> https://www.devmedia.com.br/como-criar-minha-primeira-classe-em-python/38912
Abraços xD
GOSTEI 0
Lucas Bazan
09/01/2023
Galera, estou atribuindo valor 1 ou 2 via função, para variável formula, pra poder fazer um if, porém está ficando só com o valor que usei lá em cima para declarar, já tentei declarar ela no MyBoxLayout.
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
formula = 0
class MyBoxLayout(BoxLayout):
def horas(self):
formula= 1
print(formula)
def minutos(self):
formula= 2
print(formula)
def calcular(self):
if formula == 1:
volume=float(self.ids.vol_input.text)
tempo=float(self.ids.tempo_input.text)
resultado_macro = float((volume) / (3 * tempo))
resultado_micro= float (volume/tempo)
self.ids.label_resultado.text = (''Resultado é {:.2f} em Macrogotas e {:.2f} em Microgotas''.format(resultado_macro, resultado_micro))
print(formula)
else:
volume = float(self.ids.vol_input.text)
tempo = float(self.ids.tempo_input.text)
resultado_macro = float(volume * 20/tempo)
resultado_micro = float(volume * 60 / tempo)
self.ids.label_resultado.text = (''Resultado é {:.2f} em Macrogotas e {:.2f} em Microgotas''.format(resultado_macro, resultado_micro))
print(formula)
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
formula = 0
class MyBoxLayout(BoxLayout):
def horas(self):
formula= 1
print(formula)
def minutos(self):
formula= 2
print(formula)
def calcular(self):
if formula == 1:
volume=float(self.ids.vol_input.text)
tempo=float(self.ids.tempo_input.text)
resultado_macro = float((volume) / (3 * tempo))
resultado_micro= float (volume/tempo)
self.ids.label_resultado.text = (''Resultado é {:.2f} em Macrogotas e {:.2f} em Microgotas''.format(resultado_macro, resultado_micro))
print(formula)
else:
volume = float(self.ids.vol_input.text)
tempo = float(self.ids.tempo_input.text)
resultado_macro = float(volume * 20/tempo)
resultado_micro = float(volume * 60 / tempo)
self.ids.label_resultado.text = (''Resultado é {:.2f} em Macrogotas e {:.2f} em Microgotas''.format(resultado_macro, resultado_micro))
print(formula)
veja meu post acima hehe
GOSTEI 0