我试图使用一个屏幕上的输入,在第二个屏幕上使用kivy列出一个列表。其基本思想是将一个段落分解成单词,然后显示在另一个页面上。下面是一个最小的例子。在
现在的情况是单词被挤在一起,而且没有滚动。在
在主.py公司名称:
from kivy.app import App
from kivy.app import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.label import Label
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.properties import ObjectProperty
class InputScreen(Screen):
wordList = ObjectProperty()
def getwords(self):
self.wordList=[]
s = self.ids.textInput.text.split()
for w in s:
for punctuation in [',','.','!','?']:
w.strip(punctuation)
self.wordList.append(w)
return None
class WordLabel(Label):
pass
class WordScreen(Screen):
wordList = ObjectProperty()
def updateWords(self):
self.ids.scrollContainer.clear_widgets()
wordGrid = GridLayout(cols=2,size_hint_y=None)
wordGrid.bind(minimum_height=wordGrid.setter('height'))
for w in self.wordList:
wordGrid.add_widget(Label(text=w))
wordGrid.add_widget(Label(text='property of word'))
self.ids.scrollContainer.add_widget(wordGrid)
class testScreenManager(ScreenManager):
pass
class testApp(App):
def build(self):
sm = testScreenManager()
return sm
if __name__=='__main__':
testApp().run()
在试验电压公司名称:
^{pr2}$我尝试过使用size_hint_y=.6
作为滚动视图,并在wordGrid.bind(minimum_height=wordGrid.setter('height'))
中交换height
和{
我所想的是,ScrollView容器将是窗口的高度减去另外两个小部件使用的高度。在ScrollView中,WordGrid更长(高度被限定为所有子级所需的最小高度),因此滚动用于查看所有项目。我一定不明白ScrollView、WordGrid和WordGrid的子元素的高度/大小。有人有什么见解吗?在
在本部分代码中:
默认情况下,
Label
将有size_hint_y=1
。相反,size_hint_y=None
是必需的。可以设置一个高度,就像在WordLabel
类中所做的那样——这正是OP(我所说的)要做的。在感谢相关问题Kivy ScrollView - Not Scrolling帮助我认识到错误。在
相关问题 更多 >
编程相关推荐