据我所知,kv语言在制作静态显示时非常有用,例如,而不是在运行时需要很多小部件定位的游戏。在这里我尝试做一个简单的游戏,但仍然需要很多定位,所以kv语言不在窗口小部件的上下文中,而不在屏幕上。我使用屏幕来区分主菜单和游戏屏幕。但是当我尝试使用'add_widget'来插入图像时,它总是位于窗口的中间位置。后来我发现屏幕尺寸只有100x100。将小部件动态添加到kivy屏幕对象中
下面是我能想到的唯一途径,但仍然没有运气:
class HomeScreen(Screen):
pass
class GameScreen(Screen):
pass
class ScreenManagement(ScreenManager):
pass
presentation=Builder.load_file('ProjectSD.kv')
class ProjectSDApp(App):
def build(self):
A=presentation
A.screens[0].size=(Window.size)
A.screens[0].add_widget(Label(text='hello',font_Size=80,pos=(0,0)))
return A
if __name__=='__main__':
print(Window.size)
ProjectSDApp().run()
和我ProjectSD.kv文件:
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
ScreenManagement:
transition: FadeTransition()
HomeScreen:
GameScreen:
<Button>:
font_name:'attackofthecucumbers.ttf'
<HomeScreen>:
name:'home'
canvas:
Rectangle:
pos: self.pos
size: self.size
source: 'nature.jpg'
Label:
text: 'Monopoly GX'
font_name:'KBDunkTank.ttf'
font_size:100
size_hint:0.7,0.2
pos:root.width*0.15,root.height*0.70
Button:
on_release: app.root.current = "game"
text: 'Play Game'
font_size:root.width/20
size_hint:0.3,0.15
pos:root.width*0.35,root.height*0.45
Button:
on_release: app.stop()
text: 'exit'
font_size:root.width/20
size_hint:0.3,0.15
pos:root.width*0.35,root.height*0.20
<GameScreen>:
name:'game'
Button:
on_release: app.root.current = "home"
background_color: (1,0.15,0.2,0.8)
text: 'X'
font_size:root.width/40
size_hint:0.05,0.05
pos:root.width*0.95,root.height*0.95
由于没有“正”的方法在屏幕对象中,我把我的小部件手动定位(0,0)。
所以我的问题是,如果我在使用屏幕对象从kivy的构建,如何达到同样的效果?所以我仍然可以添加和删除小部件,因为我想以后呢?
你能编辑你的问题更具体你要问什么.kv文件?您是否想要将图像添加到现有屏幕?作为背景(即另一个小部件的画布)?添加一个屏幕到屏幕管理器?应该使用屏幕来保存其他自己可以容纳诸如图像之类的布局。还请发布更多代码,一个MCVE - http://stackoverflow.com/help/mcve – Daniel
对不起,我想要做的是将图像或任何内容添加到现有屏幕,该屏幕是用kivy的内部版本创建的蟒蛇。我真正的问题是屏幕尺寸只有100x100。而不是作为背景,但作为一个可以稍后移动的对象 – aaron
你的kv文件的内容是什么 – Daniel