據我所知,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