我正在使用Kivy(2.2.1)框架用Python(3.9-64)编写一个应用程序。我在ScrollView中有一个标签,它有很多行。只要文本在屏幕上占用的空间不是太大,滚动就可以正常工作。如果减小字体大小,我可以查看行数更多文本。如果文本在给予字体大小下太长,则不显示文本。
BEE是MWE。当我在我的Windows机器上测试时(如果我改变显示分辨率,行为不会改变),如果字体大小为11或更小(代码中的self.fontSizeSmall
),则显示文本(1000行,但可以通过更改代码中m
变量的值来设置更多或更少),而不是12或更大。
行为是相同的(虽然我不知道确切的文本长度和字体大小)在我的Android应用程序在三星手机上时,建立在Ubuntu上使用builddozer。
如果你能帮忙的话,我将不胜感激。我在StackOverflow上发现了几个类似的问题,但是大多数都没有使用单个标签,我必须承认我没有很好地理解解决方案。
代码如下:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.scrollview import ScrollView
from kivy.core.window import Window
m = 200
class MainApp(App):
def build(self):
self.fontSize=24
self.fontSizeSmall=12
self.widgetsFontSize=[]
self.widgetsFontSizeSmall=[]
main_layout = BoxLayout(orientation="vertical")
self.zgodovina=""
for i in range(m):
self.zgodovina= """
Some multilne, but not too long text.
Repeated multplie times.
In acctual app these are log entires.
There can be really a lot of them
""" + self.zgodovina
scrollViewHist=ScrollView(size_hint=(None,5), size=(Window.width, Window.height))
self.ZgodovinaLabel=Label(text=self.zgodovina,size_hint=(None, None), padding=[10,0], font_size=self.fontSizeSmall)
self.ZgodovinaLabel.bind(texture_size=self.ZgodovinaLabel.setter('size'))
self.ZgodovinaLabel.bind(size_hint_min_x=self.ZgodovinaLabel.setter('width'))
scrollViewHist.add_widget(self.ZgodovinaLabel)
self.widgetsFontSizeSmall.append(self.ZgodovinaLabel)
main_layout.add_widget(scrollViewHist)
fontPlusButton=Button(text="Font +", font_size=self.fontSize)
fontPlusButton.bind(on_press=self.fontPlus)
main_layout.add_widget(fontPlusButton)
self.widgetsFontSize.append(fontPlusButton)
fontMinusButton=Button(text="Font -", font_size=self.fontSize)
fontMinusButton.bind(on_press=self.fontMinus)
main_layout.add_widget(fontMinusButton)
self.widgetsFontSize.append(fontMinusButton)
return main_layout
def fontPlus(self, instance):
self.fontSize=self.fontSize+2
self.fontSizeSmall=self.fontSizeSmall+1
print(self.fontSizeSmall)
for iWidget in self.widgetsFontSize:
iWidget.font_size=self.fontSize
for iWidget in self.widgetsFontSizeSmall:
iWidget.font_size=self.fontSizeSmall
def fontMinus(self, instance):
self.fontSize=self.fontSize-2
self.fontSizeSmall=self.fontSizeSmall-1
print(self.fontSizeSmall)
for iWidget in self.widgetsFontSize:
iWidget.font_size=self.fontSize
for iWidget in self.widgetsFontSizeSmall:
iWidget.font_size=self.fontSizeSmall
MainApp().run()
1条答案
按热度按时间xdnvmnnf1#
您超过了
Label
中支持的最大纹理大小。您可以使用以下命令访问该最大值:任何尺寸大于
GL_MAX_TEXTURE_SIZE
的纹理都将被忽略。也许使用一个BoxLayout
,将文本分散在多个Labels
中会起作用。