【问题标题】:Do I have to create a new class for each Kivy Screen? If so, why?我必须为每个 Kivy Screen 创建一个新类吗?如果是这样,为什么?
【发布时间】:2020-09-20 05:38:30
【问题描述】:

大家。怎么样了?

我找不到任何与此相关的问题。如果有的话,如果有人可以参考它并关闭线程,我会很高兴。

我是 Kivy 的完全初学者,但不是编程的初学者。我正在学习用于移动和 webdev 目的的 python。

Python 版本:3.8 基维版本:2.0.0 IDE:VS Code 社区


我正在编码:

import kivy
kivy.require('2.0.0')

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.screenmanager import Screen, ScreenManager
from kivy.lang import Builder


class LoginPage(Screen):
       pass

class SecondPage(Screen):
    pass

kv_file = Builder.load_file("layout_05.kv.txt")

class MainApp(App):
    def build(self):
        return kv_file

if(__name__=="__main__"):
    MainApp().run()

我在 Youtube 上看过一些教程,它们都以基本相同的方式进行屏幕创建和管理。是单纯的向新人演示还是实物演示,我真的不知道。

关键是,我不是 OOP 方面的专家,但我正在研究它。据我所知,对我来说更有意义的是,我应该选择一个并且只有一个继承自“Screen”类(来自 kivy.uix.screenmanager)的类,并将屏幕作为相同类型的对象。

现在,这是 goto 方法还是有更聪明的方法来处理它?

【问题讨论】:

  • 我不确定您在这里真正要问的是什么。你能举一个你的建议的例子吗?

标签: python oop kivy screen


【解决方案1】:

您不需要为每个Screen 创建一个新类。这只是一种方便的方法,并允许您构建kv 规则,例如:

<LoginPage>:
    name: 'login'
    Label:
       text: 'Some text here'
    .
    .
    .
ScreenManager:
    LoginPage:

但你可以这样做:

ScreenManager:
    Screen:
        name: 'login'
        Label:
            text: 'Some text here'
    Screen:
        name: 'screen2'
    .
    .
    .

【讨论】:

  • 谢谢你帮助我,伙计。我找不到任何帖子来说明哪种做法更好,但就我个人而言,我发现后一种方式在文字输入方面更有条理和效率。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-29
  • 2021-12-12
  • 2020-11-24
  • 2011-07-03
相关资源
最近更新 更多