【发布时间】:2021-01-10 07:22:24
【问题描述】:
我无法弄清楚为什么屏幕管理器没有占用我的两个屏幕,即使我对其进行了简化。
通过 atom 使用 Python 3.6.1 和 kivy 1.11.1。窗户机。
Disp.py
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
class OS(Screen):
def __init__(s, **kwargs):
super(OS, s).__init__(**kwargs)
print('in OS class: ')
print(s)
print(s.manager)
class TS(Screen):
def __init__(s, **kwargs):
super(TS, s).__init__(**kwargs)
print("In TS class: ")
print(s)
print(s.manager)
class SM(ScreenManager):
def __init__(s, **kwargs):
super(SM, s).__init__(**kwargs)
s.add_widget(OS())
s.add_widget(TS())
print("in SM class: ")
print(s)
print(s.children)
class DispApp(App):
def build(s):
return SM()
if __name__ == '__main__':
DispApp().run()
和Disp.kv
<SM>:
OS:
TS:
<OS>:
name: 'Open'
<TS>:
name: 'Trials'
输出:
in OS class: <Screen name=''> None In TS class: <Screen name=''> None in OS class: <Screen name='Open'> None In TS class: <Screen name='Trials'> None in SM class: <__main__.SM object at 0x10F911F0> [<Screen name='Open'>]
答:一旦初始化,TS 和 OS 屏幕就会采用 .kv 文件中的名称,但它们没有管理器。
B:为什么屏幕管理器只有一个孩子?
C:我只想在 Open Screen(OS 类)上打开一个文件,然后当它打开时,让该文件在 Trials Screen(TS 类)上运行。我认为该项目现在已经完成,除非我似乎无法进入屏幕管理器来引用其他类。 (而且我真的应该能够仅根据我的一般知识来实现屏幕管理器)
【问题讨论】:
标签: python user-interface kivy screen