我是一個完全業餘的程序員。所以我剛開始學習Kivy並刷新了我的Python內存,因爲我需要製作一個移動應用程序。我有點理解OOP的基本概念,但沒有其他。我沒有參加任何課程或其他任何課程,我只是隨着我一起前進。如何在Kivy中爲循環添加堆棧佈局?
所以我有一個基本的菜單設置與其他屏幕,所有的按鈕採取。我想添加一個堆疊佈局,其中有一堆圖像(名稱爲1.jpg,2.jpg),在其他屏幕下帶有字幕。我明白,如何在Python中實現這一點,我只是不知道如何在Kivy中做到這一點。我可以在.kv文件中將它們全部一一添加,但這需要很長時間。我嘗試了很多不同的組合,但我開始明白,我遠遠沒有接受足夠的教育,在類和對象這樣做。我永遠無法得到add_widget的權利,因爲我無法正確定位代碼,所以它甚至會運行,並且2)將它指向正確的屬性,所以即使它運行,結果也不會出現。
for循環,我通常用於測試:
g = Stack()
for i in range(9)
btn = Button(text=("Test" + str(i), size_hint=(0.2, 0.1))
g.add_widget(btn)
我在網上看了一下,我的一切是我缺少一個「自我」或「根」的地方。我不知道如何將.kv文件與add_widget相結合。對於基本菜單,我遵循一個簡單的教程。
from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.gridlayout import GridLayout
from kivy.uix.widget import *
from kivy.uix.screenmanager import *
from kivy.lang import Builder
from kivy.uix.relativelayout import RelativeLayout
from kivy.uix.stacklayout import StackLayout
from kivy.uix.image import Image
from kivy.properties import *
from kivy.config import Config
from kivy.uix.button import Button
Config.set('graphics', 'width', '411')
Config.set('graphics', 'height', '731')
class Background(Image):
pass
class Relative(RelativeLayout):
pass
class Stack(StackLayout):
pass
class MainMenu(Screen):
pass
class Other(Screen):
pass
class ScreenManagement(ScreenManager):
pass
start = Builder.load_file("KVFile.kv")
class MainApp(App):
def build(self):
return start
MainApp().run()
的.kv文件:
#: import FadeTransition kivy.uix.screenmanager.FadeTransition
ScreenManagement:
transition: FadeTransition()
MainMenu:
Other:
<MainMenu>:
# ///// BACKGROUND IMAGE /////
name: 'main'
Background:
source: 'BG.jpg'
background_color: .34, .2, .48, .7
size_hint: None, None
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
size: 800, 800
# ///// MAIN MENU BUTTON LAYOUT /////
Relative:
Button:
font_name: 'Effra_Std_Bd'
font_size: 35
text: "LOREM"
on_release: app.root.current = "other"
background_color: .34, .2, .48, .7
size_hint: 0.39, 0.09
pos_hint: {'center_x': 0.3, 'center_y': 0.4}
Button:
font_name: 'Effra_Std_Bd'
font_size: 35
text: "IPSUM"
on_release: app.root.current = "other"
background_color: .34, .2, .48, .7
size_hint: 0.39, 0.09
pos_hint: {'center_x': 0.7, 'center_y': 0.4}
Button:
font_name: 'Effra_Std_Bd'
font_size: 35
text: "DOLOR"
on_release: app.root.current = "other"
background_color: .34, .2, .48, .7
size_hint: 0.39, 0.09
pos_hint: {'center_x': 0.3, 'center_y': 0.3}
Button:
font_name: 'Effra_Std_Bd'
font_size: 35
text: "SIT"
on_release: app.root.current = "other"
background_color: .34, .2, .48, .7
size_hint: 0.39, 0.09
pos_hint: {'center_x': 0.7, 'center_y': 0.3}
Button:
font_name: 'Effra_Std_Bd'
font_size: 35
text: "AMET"
on_release: app.root.current = "other"
background_color: .34, .2, .48, .7
size_hint: 0.39, 0.09
pos_hint: {'center_x': 0.3, 'center_y': 0.2}
Button:
font_name: 'Effra_Std_Bd'
font_size: 35
text: "OTHER"
on_release: app.root.current = "other"
background_color: .34, .2, .48, .7
size_hint: 0.39, 0.09
pos_hint: {'center_x': 0.7, 'center_y': 0.2}
<Other>:
name: 'other'
Stack:
我知道這是一種特定的不是很的問題,我應該學習的文檔,但信息量有壓倒性的。