【发布时间】:2020-03-06 12:33:16
【问题描述】:
我的 GUI 由一个标题栏组成,其中的按钮控制中间的屏幕管理器,然后是实际的屏幕管理器,以及一个带有状态更新的底部栏。
通常我用顶部的按钮控制中间的屏幕。简单。现在我的问题是,其中一个屏幕已经非常复杂了,而且我有一个问题是我有这么多的缩进......所以,我们开始吧: 我想在另一个屏幕管理器 sm1 中拥有一个屏幕管理器 sm2,并从 sm2 中访问来自 sm1 的屏幕。
我尝试使用以下语法重新创建我的问题,我希望我没有忘记任何重要的事情。我尝试使用动态类等,但我的代码链接到很多我使用 root.functions 访问的 python 代码,但它并没有很好地工作。
Kivy 语法:
BoxLayout:
size_hint: 1, 0.1
Label:
text: 'Title Bar with Menu'
Button:
text: 'Go to Screen 1'
on_release: sm1.current = 'outerScreen1'
Button:
text: 'Go to Screen 2'
on_release: sm2.current = 'outerScreen2'
Screenmanager:
id: sm1
Screen:
name: 'outerScreen1'
BoxLayout:
Label:
text: 'Testlabel'
Screen:
name: 'outerScreen2'
BoxLayout:
orientation: 'horizontal'
size_hint: 1, 0.1
anchor_y: 'top'
pos_hint: {'top': 1}
Label:
text: 'Title Bar inside outerScreen2'
Button:
text: 'Go to innerscreen Home'
on_release: sm2.current = 'screen2Home'
Button:
text: 'Go to innerscreen Meow'
on_release: sm2.current = 'screen2Meow'
Button:
text: 'Go to outerscreen 1, but inside screenmanager sm2'
on_release: sm2.current = 'outerScreen1' **#This is where the problem is**
BoxLayout:
orientation: 'horizontal'
size_hint: 1, 0.9
ScreenManager:
id: sm2
Screen:
name: 'screen2Home'
Label:
text: 'simple test'
Screen:
name: 'screen2Meow'
Label:
text: 'I meow sometimes'
【问题讨论】:
-
只是将
sm2更改为sm1(在您标记的行中)是否符合您的要求? -
嘿 - 不幸的是没有。如果我这样做,它会在外部屏幕管理器中显示内容,并且我会丢失内部屏幕元素(在此示例中没有)。所以我有一个内部菜单栏,我想在从外部屏幕管理器访问屏幕时拥有它。
-
那
accessing screens from the outer screen manager是什么意思? -
在 sm2 中显示 sm1.outerScreen1。