我想用python代码做一个按钮go 到上一个屏幕,问题是它使用的是默认的过渡动画(从左到右),看起来很奇怪.我在处理这个文件时没有遇到任何问题,但是在这个特定的屏幕中,我必须使用Python代码来更改该属性.我想让它从右到左,因为默认的动画看起来很奇怪.
我在KV文件中这样做:
root.manager.transition.direction = "right"
个
我试过了:
back_button.on_release = lambda: setattr(self.manager, "transition", "right")
,但这不是这样的:)
完整的屏幕代码:
class Contraindicaciones(MDScreen):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# Scrollview
self.scrollview_contraindicaciones = MDScrollView(size_hint=(1, None), size = (Window.width, Window.height))
# GridLayout
layout_contraindicaciones = MDGridLayout(orientation = "lr-tb", spacing = "60dp", padding = "20dp", size_hint_x = 1, size_hint_y = None, cols = 2)
layout_contraindicaciones.bind(minimum_height = layout_contraindicaciones.setter("height"))
# Go Back Button:
invisible_label1 = MDLabel(text = "")
invisible_label1.size_hint_y = None
invisible_label1.size_hint_x = 0.5
invisible_label1.height = dp(50)
back_button_layout = MDBoxLayout(orientation = "vertical")
back_button = MDFillRoundFlatButton(text = "Anterior", font_name = "fonts/Lato-Bolditalic.ttf")
back_button.haling = "left"
back_button.size_hint_y = None
back_button.size_hint_x = 0.5
back_button.on_release = lambda: setattr(self.manager, "transition", "right")
back_button.on_release = lambda: setattr(self.manager, 'current', 'c_t')
back_button_layout.add_widget(back_button)
layout_contraindicaciones.add_widget(back_button_layout)
layout_contraindicaciones.add_widget(invisible_label1)
#title
title_label = MDLabel(text = "Contraindicaciones", halign="left")
title_label.font_size = "15dp"
title_label.size_hint_y = None
title_label.size_hint_x = 1
title_label.font_name = "fonts/Lato-Bolditalic.ttf"
title_label.height = dp(50)
# Invisible Label
invisible_label2 = MDLabel(text = "")
invisible_label2.size_hint_y = None
invisible_label2.size_hint_x = 0.25
invisible_label2.height = dp(50)
# Title and Invisible Label to not mess the rest up
layout_contraindicaciones.add_widget(title_label)
layout_contraindicaciones.add_widget(invisible_label2)
contraindicaciones = ["Hemorragia intracraneal (HIC) previa", "Lesión vascular cerebral estructural conocida",
"Neoplasia intracraneal maligna conocida ya sea primaria o metastásica", "Accidente cerebrovascular isquémico en un plazo de 3 meses",
"Sospecha de disección aórtica", "Hemorragia activa o diátesis hemorrágica", "Traumatismo craneoencefálico cerrado importante o traumatismo facial en los últimos 3 meses",
"Cirugía intracraneal o intramedular en un plazo de 3 meses", "Hipertensión no controlada grave", "En caso de estreptoquinasa, el tratamiento previo debe ser dentro de los 6 meses previos"]
for contraindicacion in contraindicaciones:
size_checkbox = dp(32)
size_labels = dp(12)
checkbox = MDCheckbox(size_hint = (0.5, None), size = (size_checkbox, size_checkbox))
label = MDLabel(text = contraindicacion, size_hint = (0.5, None), size = (size_labels, size_labels))
label.font_name = "fonts/Lato-Italic.ttf"
layout_contraindicaciones.add_widget(label)
layout_contraindicaciones.add_widget(checkbox)
# Button and invisible label
invisible_label3 = MDLabel(text = "")
invisible_label3.size_hint_y = None
invisible_label3.size_hint_x = 0.5
invisible_label3.height = dp(50)
next_button = MDFillRoundFlatButton(text = "Continuar", font_name = "fonts/Lato-Bolditalic.ttf")
next_button.haling = "right"
next_button.size_hint_y = None
next_button.size_hint_x = 0.5
next_button.on_release = lambda: setattr(self.manager, 'current', 't_y')
layout_contraindicaciones.add_widget(invisible_label3)
layout_contraindicaciones.add_widget(next_button)
#Se agrega Grid a Scroll
self.scrollview_contraindicaciones.add_widget(layout_contraindicaciones)
self.add_widget(self.scrollview_contraindicaciones)
以下是屏幕管理器和应用程序的代码:
class WindowManager(MDScreenManager):
pass
class PatricApp(MDApp):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.previous_screen = ""
def build(self):
Window.clearcolor = (255,255,255,255)
self.root_widget = Builder.load_file("patric.kv")
return self.root_widget
def show_time_picker(self):
time_dialog = MDTimePicker()
time_dialog.open()
if __name__ == "__main__":
PatricApp().run()