python - Kivy 不使用操作栏上的按钮更改屏幕
问题描述
我提到的代码来自 ikolim 的回答:为什么我的 Kivy Actionbar 不见了?
这是我的python代码:
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager,Screen
from kivy.properties import ObjectProperty
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder
from kivy.core.window import Window
Window.clearcolor = (1,1,1,1)
Builder.load_file("designdawkalamomarunong.kv")
class Menu(BoxLayout):
manager = ObjectProperty(None)
class Add(Screen):
pass
class Help(Screen):
pass
class Credits(Screen):
pass
class Manager(ScreenManager):
addScreen = ObjectProperty(None)
helpScreen = ObjectProperty(None)
creditsScreen = ObjectProperty(None)
class AntsApp(App):
def build(self):
return Menu()
if __name__ == '__main__':
AntsApp().run()
这是基维代码:
<Menu>:
manager: screen_manager
orientation: "vertical"
ActionBar:
size_hint_y: 0.1
ActionView:
ActionPrevious:
ActionButton:
text: "Add"
on_release: app.root.current = "add"
ActionButton:
text:"Help"
on_release: app.root.current = "help"
ActionButton:
text: "Credits"
on_release: app.root.current = "credits"
Manager:
id: screen_manager
<Add>:
text: "hello boi"
<Help>:
text: "hello world"
<Credits>:
text: "goodbye world lol"
<Manager>:
id: screen_manager
addScreen: addScreen
helpScreen: helpScreen
creditsScreen: creditsScreen
Add:
id: addScreen
name: 'add'
manager: screen_manager
Help:
id: helpScreen
name: 'help'
manager: screen_manager
Credits:
id: creditsScreen
name: 'credits'
manager: screen_manager
当我单击操作栏上的按钮时,它不会返回任何内容。我应该添加其他东西吗?先感谢您 :)
编辑:尝试这样做:
<Add>:
Button:
text: "hello boi"
它有效但是当我尝试这个时:
<Add>:
Label:
text: "hello boi"
那没起效。我在这里想念什么?
解决方案
问题
.kv 文件
- 替换所有出现的
app.root.current
因为root.manager.current
是root
小BoxLayout
部件而不是ScreenManager
小部件。 - 每个屏幕
Label
在text
. - 当您在 Screen 的每个类规则中将 Button 小部件实例化为子项时,文本是可见的。但是,当您将 Button 小部件替换为 Label 时,文本是不可见的。原因是因为 Label 的默认颜色文本是白色 (
rgba=1, 1, 1, 1
),而 BoxLayout 的颜色也是白色。因此,您无法看到文本。如果使用标签小部件,请添加color: (0, 0, 0, 1) # black color text
.
例子
.kv 文件
#:kivy 1.11.0
<Menu>:
manager: screen_manager
orientation: "vertical"
ActionBar:
size_hint_y: 0.1
ActionView:
ActionPrevious:
ActionButton:
text: "Add"
on_release: root.manager.current = "add"
ActionButton:
text:"Help"
on_release: root.manager.current = "help"
ActionButton:
text: "Credits"
on_release: root.manager.current = "credits"
Manager:
id: screen_manager
<Add>:
Label:
text: "hello boi"
color: 0, 0, 0, 1 # black color text
<Help>:
Label:
text: "hello world"
color: 0, 0, 0, 1 # black color text
<Credits>:
Label:
text: "goodbye world lol"
color: 0, 0, 0, 1 # black color text
<Manager>:
addScreen: addScreen
helpScreen: helpScreen
creditsScreen: creditsScreen
Add:
id: addScreen
name: 'add'
Help:
id: helpScreen
name: 'help'
Credits:
id: creditsScreen
name: 'credits'
输出
推荐阅读
- java - NoClassDefFoundError 总是由 ClassNotFoundException 引起的吗?
- python - 识别矩阵中相邻元素的属性
- javascript - 刀片分页开始数据页0标签1使用jquery
- java - 获取 PKIX 路径构建失败
- arrays - Pact,确保数组中的键名
- javascript - jquery datepicker 不应在更新 minDate 或 maxDate 时自动更改时间值
- sql - 在 Oracle 中比较数字和字符串
- python - 在默认浏览器中打开 wx.html " " 标签
- android - 无法以相对或线性布局滚动内容
- wordpress - wordpress woocomec 产品无法在产品下添加一些链接或文本