저는 sqlite3 데이터베이스에서 데이터를 가져 와서 TreeView를 채우는 kivy 앱을 만들고 있습니다. 일부 그룹을 확장 할 때 TreeView가 너무 커서 화면에 맞지 않게되므로 ScrollView 내부에 넣으므로 아래로 스크롤하여 화면 아래쪽에있는 항목을 볼 수 있습니다. 기본 ScrollView 작동하도록 얻을 수 있지만 내부에 내 TreeView 넣을 때 아무 스크롤 및 내 TreeView 위쪽 부분이 내 화면 맨 위에 있습니다.Kivy에서 ScrollView의 TreeView - 스크롤하지 않습니다.
은 내가 .kv 파일없이 실행 문제의 작동 예에 코드를 손질 한 내 실제 앱 modGroups 및 modItems에서
from kivy.uix.scrollview import ScrollView
from kivy.uix.gridlayout import GridLayout
from kivy.core.window import Window
from kivy.uix.widget import Widget
from kivy.uix.treeview import TreeView, TreeViewNode
from kivy.uix.treeview import TreeViewLabel
from kivy.app import App
from kivy.properties import ObjectProperty, StringProperty
from kivy.uix.button import Button
class TreeViewButton(Button, TreeViewNode):
pass
modGroups = [u'Fruit', u'Fruit', u'Meat', u'Dairy', u'Dairy', u'Fruit']
modItems = [u'Apple', u'Pear', u'Spam', u'Egg', u'Milk', u'Banana']
modDict = dict()
modDictUnique = dict()
def populate_tree_view(tv):
modDict = zip(modGroups, modItems)
print modGroups
print modItems
for k, v in modDict:
if k not in modDictUnique:
modDictUnique[k] = [v]
else:
modDictUnique[k].append(v)
sortedGroups = modDictUnique.keys()
sortedGroups.sort()
#print modItems
#print modDictUnique
n = tv.add_node(TreeViewLabel(text='Food', is_open=True))
for group in sortedGroups:
g = tv.add_node(TreeViewLabel(text='%s' % group), n)
for item in modDictUnique[group]:
tv.add_node(TreeViewButton(text='%s' % item), g)
class POSFMApp(App):
def build(self):
layout = GridLayout(cols=1, spacing=50, size_hint_y=None,width=800)
layout.bind(minimum_height=layout.setter('height'))
#for i in range(30):
# btn = Button(text=str(i), size=(480, 40),
# size_hint=(None, None))
# layout.add_widget(btn)
tv = TreeView(root_options=dict(text='Tree One'), hide_root=True, indent_level=4, minimum_height=5000)
populate_tree_view(tv)
layout.add_widget(tv)
root = ScrollView(size_hint=(None, None), size=(800, 700))
root.center = Window.center
root.add_widget(layout)
return root
if __name__ == '__main__':
POSFMApp().run()
sqlite3를 데이터베이스에서 채워집니다 만,이 예 sqlite3을 사용하여 문제를 해결할 필요가 없습니다. 나는 (주석) 라인에 넣어 :
#for i in range(30):
# btn = Button(text=str(i), size=(480, 40),
# size_hint=(None, None))
# layout.add_widget(btn)
을이 kivy ScrollView example에서 나는이 라인의 주석을 해제하면 것을 보여 내 TreeView에 대한 세 줄을 주석
tv = TreeView(root_options=dict(text='Tree One'), hide_root=True, indent_level=4, minimum_height=5000)
populate_tree_view(tv)
layout.add_widget(tv)
그럼 내가 작업을 얻을 수 있습니다 마우스의 스크롤 휠을 사용할 때 예상대로 오른쪽에 스크롤 막대가있는 ScrollView.
가장 좋은 추측은 TreeView가 ScrollView에 세로 길이를 알려주지 않으므로 ScrollView가 y 축을 스크롤해야한다는 것을 알지 못한다는 것입니다. 그것은 단지 추측입니다.
어떻게 내 TreeView를 통해 스크롤 할 수 있도록 (특히 y 축에서) ScrollView 내에서 작동하도록 TreeView를 가져올 수 있습니까?
GUI의 스냅 샷을 추가 할 수 있습니까? 구현 한 것과 비슷한 것을 찾고 있습니까? –