- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个 kivy 程序/游戏。我以前也做过一个,不过总共只有一屏。我已经开始开发一个新程序,其中包含实现屏幕管理器
的想法。我设法在 python 文件内构建了屏幕管理器,但它不适合我的长期使用,我想尝试一下屏幕管理器来自 .kv 文件
。
任何指导将不胜感激,不确定我错过了什么。我查看了这个问题(Kivy - Screen Manager - Accessing attribute in other class),并将我认为正确的内容拼凑在一起,但仍然无法加载屏幕 - 我觉得这是一个简单的答案,我很盲目......
main.py;
from kivy.app import App
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
class MenuScreen(Screen):
pass
class NewGameScreen(Screen):
pass
class LoadGameScreen(Screen):
pass
class ASCIILifeApp(App):
pass
if __name__ == "__main__":
ASCIILifeApp().run()
ASCIILife.kv;
#: kivy 1.9
#: import ScreenManager kivy.uix.screenmanager.ScreenManager
#: import Screen kivy.uix.screenmanager.ScreenManager
#: import NewGameScreen screen
#: import LoadGameScreen screen
ScreenManager:
id: screen_manager
#transition: FadeTransition()
MenuScreen:
id: menu_screen
name: 'MenuScreen'
manager: 'screen_manager'
NewGameScreen:
id: newgame_screen
name: 'NewGameScreen'
manager: 'screen_manager'
LoadGameScreen:
id: loadgame_screen
name: 'LoadGameScreen'
manager: 'screen_manager'
<MenuScreen>:
BoxLayout:
orientation: 'vertical'
Label:
text: 'ASCII Life'
font_size: 50
Button:
text: 'New Game'
font_size: 30
on_release: app.root.current = 'newgame'
Button:
text: 'Load Game'
font_size: 30
on_release: app.root.current = 'loadgame'
Button:
text: 'Settings'
font_size: 30
on_release: app.root.current = 'something'
<NewGameScreen>:
BoxLayout:
orientation: 'vertical'
BoxLayout:
orientation: 'vertical'
Label:
text: 'Game Length in Days'
font_size: 30
BoxLayout:
orientation: 'horizontal'
ToggleButton:
text: '100'
state: 'down'
group: 'newgame_days'
font_size: 30
ToggleButton:
text: '200'
group: 'newgame_days'
font_size: 30
BoxLayout:
orientation: 'horizontal'
ToggleButton:
text: '365'
group: 'newgame_days'
font_size: 30
ToggleButton:
text: '3650'
group: 'newgame_days'
font_size: 30
ToggleButton:
text: 'Unlimited'
group: 'newgame_days'
font_size: 30
BoxLayout:
orientation: 'vertical'
size_hint: (1, .5)
Label:
text: 'Difficulty (Score Multiplier)'
font_size: 30
BoxLayout:
orientation: 'horizontal'
ToggleButton:
text: 'Easy (x1)'
state: 'down'
group: 'newgame_difficulty'
font_size: 30
ToggleButton:
text: 'Medium (x2.5)'
group: 'newgame_difficulty'
font_size: 30
ToggleButton:
text: 'Hard (x5)'
group: 'newgame_difficulty'
font_size: 30
<LoadGameScreen>:
BoxLayout:
orientation: 'vertical'
Label:
text: 'load a game'
font_size: 30
Widget:
canvas:
Ellipse:
pos: self.pos
size: self.size
BoxLayout:
Button:
text: 'Menu'
font_size: 30
on_release: app.root.current = 'menu'
Button:
text: 'text'
font_size: 30
编辑:截断的 kv 文件
最佳答案
答案是使用构建器来构建 kv 文件。知道这很简单。文件如下;
main.py
#!/usr/bin/kivy
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen, FadeTransition
from kivy.properties import ObjectProperty
class MenuScreen(Screen):
pass
class NewGameScreen(Screen):
pass
class LoadGameScreen(Screen):
pass
class ScreenManager(ScreenManager):
pass
buildKV = Builder.load_file("ASCIILife.kv")
class ASCIILifeApp(App):
def build(self):
return buildKV
if __name__ == "__main__":
ASCIILifeApp().run()
关于python - Kivy 使用 kv 文件中的 ScreenManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34748579/
我正在尝试创建启动画面。 这是代码。 from kivy.app import App from kivy.uix.image import Image from kivy.uix.screenman
我想在我的游戏中创建一个由 Kivy 编码的菜单,玩家可以在其中选择不同的选项并启动游戏。 我已经了解了 ScreenManager 模块,但我不知道它是否适合于此: from kivy.uix.sc
我正在尝试使用 get_screen() 函数来获取一个屏幕,该屏幕的名称以字符串形式给出。但令人烦恼的是,我不断收到 TypeError: 'kivy.properties.ListPropert
我正在尝试更新另一个屏幕中存在的字段,但没有成功。当有人能告诉我我在这里做错了什么时,我会非常非常高兴。 myscreenskv.py: style = r''' # File: myscreensk
我是 Kivy 新手,但能够创建一个单屏应用程序。一切看起来都很好,直到我需要添加更多屏幕。一页应用程序显示正确,但当我添加屏幕时,BoxLayouts 不再按我的预期工作。所有小部件都在屏幕底部呈现
我正在编写一个 kivy 程序/游戏。我以前也做过一个,不过总共只有一屏。我已经开始开发一个新程序,其中包含实现屏幕管理器的想法。我设法在 python 文件内构建了屏幕管理器,但它不适合我的长期使用
试图让我的 kivy 与 screenmanager 和 scrollview 一起工作。我不明白为什么它不起作用。如果我删除 ScrollView 并将其保留为一个简单的框和按钮(如代码中的屏幕 2
我正在为我的游戏设置屏幕管理器,但它没有按我想要的方式工作。我开发了在传递给此屏幕管理器的 JFrame 上在全屏和窗口之间切换的方法,但它给了我不应该出现的错误。为了获得独家全屏,我想通过 setU
我正在尝试使用 Kivy 并尝试将 ScreenManager 实例嵌套在 BoxLayout 中。我遇到的问题是,当 ScreenManager 是 BoxLayout 的子部件时,ScreenMa
我正在尝试弄清楚如何仅在按某个按钮时更改 kivy 中的屏幕方向动画(取消按钮应该像向前导航按钮一样向右删除而不是向左删除。)这是我目前正在做的事情实现这一点: # Cancel Button
如果在带有 DropDown 的屏幕之前有屏幕,我在使用 ScreenManager 和 DropDown 时会遇到可重现的困难。我已经为此苦苦挣扎了好几天,因为我是初学者,我认为这是我的错。 我将代
我曾在这里发表过一篇文章(触发 screenmanager 从 if 条件更改 Kivy 中的屏幕),尝试以不同的方法执行相同的任务。我在那里没有得到任何解决方案,所以我正在尝试不同的方法。但是,我现
如标题所述 - 我被卡住了。我一直在研究代码,只要我将 ScreenManager 和 Popup 分开,一切都会正常进行。一旦合并 - 他们拒绝合作。无论如何,这是显示我遇到的问题的简单应用程序。
我正在尝试使用 kivy,开发一个应用程序来注册锻炼程序,并在屏幕管理器中使用几个屏幕。但是,运行代码时,我收到 ScreenManagerException: kivy.uix.screenmana
我是 kivy 新手,需要 ListView 和 ScreenManager 方面的帮助。我设法在单个屏幕上使用 ListView,但我尝试通过 ScreenManager 在两个屏幕上使用它:我在主
完美的功能代码: from kivy.app import App from kivy.lang import Builder from kivy.uix.screenmanager import S
我正在 kivy 中使用屏幕管理器制作一个应用程序,但我被困在这里。我是 kivy 和 python 的新手。据我所知,我所做的一切都是正确的。 错误说 - kivy.uix.screenmanage
我是一名优秀的程序员,十分优秀!