在这里,我试图根据一个名为"view“的变量来刷新屏幕。我们的目标是加载页眉和页脚以及请求的视图(页面),当我调用View('example')时,视图不会改变,但是所有的打印效果都很好。
我错过了什么?我是python和kivy的新手,所以如果有什么东西已经存在,我会接受的:)
主.py
import kivy
import runpy
import re
import pathlib
from kivy.app import App
from libraries.env import env
from App.Controllers.Controller import View
class App(App):
route = ""
params = {}
def build(self):
return View('home')
#Parse routes.py and load the required controller
def route(self, route, params=None):
filepath = 'routes.py'
controller = ""
controllerClass = ""
action = ""
with open(filepath) as fp:
for line_num, line in enumerate(fp):
splitted = re.split('=|@', line)
if splitted[0] == route :
controller = splitted[1].replace('"', '')
controllerClass = controller.split('/')[-1]
action = splitted[2].replace('"', '').replace('\n', '')
if controller:
runpy.run_path(controller + '.py', run_name='__index__')
else:
print("Le controller pour la route " + route + " est introuvable.")
if __name__ == '__main__':
App().run()应用程序/控制器/HomeController.py
from App.Controllers.Controller import View
class HomeController():
def index(self):
print('Controller : HomeController => index')
return View("home")
if __name__=='__index__':
HomeController().index()应用程序/控制器/Controller.py
import pathlib
from kivy.lang import Builder
from kivy.uix.boxlayout import BoxLayout
class View(BoxLayout):
def __init__(self, view, **kwargs):
print('View : pages/' + view + '.kv')
super(View, self).__init__(**kwargs)
self.clear_widgets()
self.orientation = "vertical"
self.add_widget(Builder.load_file("App/Views/partials/header.kv"))
p = pathlib.Path('App/Views/pages/'+view+'.kv')
if p.is_file():
self.add_widget(Builder.load_file("App/Views/pages/"+view+".kv"))
print("Chargement de la vue ok.")
else:
print("La vue " + view + " est introuvable.")
self.add_widget(Builder.load_file("App/Views/partials/footer.kv"))在全球范围内,我正在尝试学习python (我来自PHP)。我通过制作一个小的自制框架进行训练。这里提供了正在进行的工作:https://github.com/mchev/Larathon
发布于 2020-11-29 22:26:24
当我调用
(‘example’)时,视图不会改变,但所有的打印效果都很好。
这是因为这会实例化一个新的View,但不会对它做任何事情,所以您的代码会运行,但您不会在任何地方显示结果。
假设您打算在现有的视图上运行一些代码,而不是像这样的新视图。如果你不知道如何去做,那就发布一个最小的可运行的例子来演示这个问题。
https://stackoverflow.com/questions/65061110
复制相似问题