[英]kivy: Is it possible to have the same Tabbed Panel on different screens?
im wondering if it is possible to have a Tabbed Panel permanently even though im switching between screens?我想知道即使我在屏幕之间切换,是否可以永久拥有一个选项卡式面板? Ive tried having the TabbedPanel outside the mainscreen, on a different class and so on.
我已经尝试在主屏幕之外,在不同的班级等上使用 TabbedPanel。 So far when i switch to the FirstScreen the TabbedPanel disapears.
到目前为止,当我切换到 FirstScreen 时,TabbedPanel 消失了。
Python: Python:
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.tabbedpanel import TabbedPanel
class TabbedTest(TabbedPanel):
pass
class MainScreen(Screen):
pass
class Firstscreen(Screen):
pass
class Secondscreen(Screen):
pass
class myapp(App):
def build(self):
# Create the screen manager
sm = ScreenManager()
sm.add_widget(MainScreen(name='main'))
sm.add_widget(Firstscreen(name='first'))
sm.add_widget(Secondscreen(name='second'))
return sm
if __name__ == '__main__':
myapp().run()
kv:千伏:
<TabbedTest>:
do_default_tab: False
TabbedPanelItem:
text:"test"
<MainScreen>:
BoxLayout:
Button:
text: 'first'
on_press: root.manager.current = 'first'
Button:
text: 'second'
on_press: root.manager.current = 'second'
<Firstscreen>:
BoxLayout:
Label:
text:"first"
Button:
text: 'Back to main'
on_press: root.manager.current = 'main'
<Secondscreen>:
BoxLayout:
Label:
text:'second'
Button:
text: 'Back to main'
on_press: root.manager.current = 'main'
Rather than adding the TabbedTest
to each Screen
, just make the TabbedTest
and ScreenManager
as children of the root widget of the App
.而不是将
TabbedTest
添加到每个Screen
,只需将TabbedTest
和ScreenManager
作为App
的根小部件的子级。 One way to do this is to modify the build()
method:一种方法是修改
build()
方法:
def build(self):
root = FloatLayout()
self.tabbedtest = TabbedTest(size_hint_y=0.5, pos_hint={'top': 1.0}) # later you can use self.tabbedtest to add more tabs
root.add_widget(self.tabbedtest)
# Create the screen manager
sm = ScreenManager(size_hint_y=0.5, pos_hint={'y': 0})
sm.add_widget(MainScreen(name='main'))
sm.add_widget(Firstscreen(name='first'))
sm.add_widget(Secondscreen(name='second'))
root.add_widget(sm)
return root
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.