我正在使用Kivy,一個Python庫,並且我無法使滾動視圖正常工作,並將其組織到.kv文件中。Kivy使用kivy語言和自定義小部件滾動查看
我有一個很大的系統,分解成許多.py和.kv文件。
我也使用kivy的屏幕管理
ui_manager.py
#ui_manager.py
class UIManager():
_ScreenManager = None
def __init__(self, inScreenManager):
self.ScreenManager = inScreenManager # The main app constructs the manager, sends to me, then returns it as the root widget.
main.py
#main.py
class MyApp(App):
def build(self):
screenManager = ScreenManager()
uiManager = ui_manager.UIManager(screenManager)
return screenManager
很顯然,我中省略一些代碼,但是這是幾乎完全發生了什麼。
其中一個sc needs需要滾動。它將有一個長圖形和許多按鈕。 的Kivy文檔,像往常一樣,只是告訴我如何通過代碼來做到這一點,不是通過kivy語言(.kv文件) http://kivy.org/docs/api-kivy.uix.scrollview.html
我想一個類,OrangeWidget,保持滾動部件,這樣我就可以稍後再玩它的數據。 這是在獲得一個有組織的滾動視圖工作
orange_widget.py
#orange_widget.py
class OrangeWidget(Screen):
pass
class OrangeGraphic(Widget):
pass
Orange.kv
<OrangeLineWidget>
ScrollView:
size_hint: (None, None)
size: (400, 1200)
OrangeLineGraphic:
pos: root.pos
<OrangeGraphic>
canvas:
Color:
rgba: 1, .5, 0, 1
Rectangle:
pos: self.center_x - 15, 0
size: 30, self.height * 2
Label:
text: "Hello"
我知道這是一個很多我的最好的嘗試,它不看良好的組織已經,但我只是想弄清楚如何讓dang的東西正常工作。
下面是當前的結果:它不會滾動,而不管是什麼原因,它已經「盒裝」的權利,而不是佔用整個屏幕
這適用於只是將其設置爲root.pos,把它放在滑塊的最左下角,但將按鈕/標籤移動到相對位置怎麼樣?如果你執行了y:root.y/2或size_hint =(。5,1),你會得到一些非常混亂的行爲 – MintyAnt 2013-03-06 16:15:36
我不確定你說的是什麼搞砸的行爲,如果你把「 y:root.y/2「(你可能想要」center_y:root.center_y「,但在這種情況下這不是很大的區別),當root.y被更新時,y pos會被更新。爲了您使用size_hint,您只需讓孩子達到父母的一半寬度,但我沒有看到任何問題。我明白RelativeLayout解決方案更容易,但我認爲這個問題是在kivy中對位置和綁定的誤解。 – Tshirtman 2013-03-07 19:19:16