提问人:Leon Kardaš 提问时间:4/28/2021 最后编辑:Leon Kardaš 更新时间:4/29/2021 访问量:284
kivy - GridLayout 中的第一行为空,最后一行是隐藏的,ScrollView
kivy - First row in a GridLayout is blank and the last one is hidden, ScrollView
问:
我正在尝试在 Kivy 中制作一个可滚动的长列表(例如歌曲列表)。一切正常,除了看起来一切都向下移动了一位(我尝试打印位置,空白位置(第一行)将具有第一行的值,但会输出一个空行,然后第二行也将具有正确的值,但会输出到屏幕第一行的值, 我描述得很差,所以如果有人需要更多信息,我很乐意发布代码)
它不会产生错误,但令人不快,并且会使其余代码无法工作。
这是我可以重现错误的最小代码: 为了简化起见,我没有使用 .kv 文件,还要注意变量: brojPjesmi 是要创建多少行的变量 var1 和 var2 通常是打印到行的变量
from kivy.app import *
from kivy.uix.label import *
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window
from kivy.uix.gridlayout import GridLayout
brojPjesmi = 20
var1 = 0
var2 = 1
class MyRow(ScrollView):
def __init__(self, **kwargs):
super(MyRow, self).__init__(**kwargs)
self.size_hint=(1,None)
self.size=(Window.width,Window.height)
layout = GridLayout(cols = 1,spacing= 10,size_hint_y = None)
layout.bind(minimum_height = layout.setter('height'))
for i in range(brojPjesmi):
self.z = OneRow()
self.u = self.z.make(var1,var2)
layout.add_widget(self.u)
self.add_widget(layout)
class OneRow(GridLayout):
def make(self,x,y):
self.cols = 3
self.rows = 1
self.height = 25
self.size_hint_y = None
self.Treci = Label(text = str(""),size_hint_y= None,size_hint_x =.1)
self.prviDio = Label(text = str("y"),size_hint_y= None)
self.drugiDio = Label(text = str("x"),size_hint_y= None)
self.add_widget(self.Treci)
self.add_widget(self.prviDio)
self.add_widget(self.drugiDio)
return self
class langApp(App):
def build(self):
return MyRow()
if __name__ == '__main__':
langApp().run()
更新: 我认为错误在这 3 行代码中的某个地方:
self.z = OneRow()
self.u = self.z.make(var1,var2)
layout.add_widget(self.u)
因为当我用
btn = Button(text=str(i), size_hint_y=None, height=40)
layout.add_widget(btn)
它完美无缺
答:
0赞
John Anderson
4/29/2021
#1
我相信问题出在方法中创建的大小。尝试如下操作:Labels
make()
self.Treci = Label(text = str(""), size_hint=(None, None), height=25, width=50)
self.prviDio = Label(text = str("y"), size_hint=(None, None), height=25, width=50)
self.drugiDio = Label(text = str(x), size_hint=(None, None), height=25, width=50)
评论