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