Kivy小部件的文本几乎不可读

时间:2019-05-16 17:49:03

标签: python python-3.x kivy

我在Windows 10计算机上安装Kivy时遇到问题。我已经从the Kivy website复制了“ Hello,World”示例,但是当我运行它时,几乎没有任何显示。屏幕非常黑,除了“ Hello world”非常微弱。在另一台计算机(也是Windows 10计算机)上,我尝试运行完全相同的代码,并且“ Hello world”消息为白色且完全可读。

这是我正在运行的代码:

import kivy
kivy.require("1.10.1")

from kivy.app import App
from kivy.uix.label import Label


class MyApp(App):

    def build(self):
        return Label(text='Hello world')


if __name__ == '__main__':
    MyApp().run()

以下是我的计算机上实际显示的屏幕截图:

simple label testing

如果仔细观察,您几乎看不到图像中间的“ Hello world”消息。

我有使用Glew的Kivy版本1.10.1,在Python 3.6上运行。我已经安装了Cython和Pygame并已更新到最新版本,尽管我在最初安装Kivy之后就安装了它们,但它们似乎无法解决该问题。我试图重新安装Kivy,但似乎没有任何改变。

非常感谢您的帮助。

编辑-

我已经完全重新安装了我所有通过pip下载的Python软件包,并且看起来工作得更好。但是,我在计算机上看到的内容与在另一台计算机上看到的内容之间仍然存在差异。

这是我在计算机上看到的内容:

testing on my computer

文本仍然不是应该的白色,而是灰色。

这是我在另一台计算机上看到的内容:

testing with a different coputer

编辑-

一个更新-如果我将Label放入FloatLayoutStackLayout中,它将显示出应有的状态。这是有效的代码,与我上面粘贴的代码相反:

import kivy
kivy.require("1.10.1")

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.stacklayout import StackLayout
from kivy.uix.floatlayout import FloatLayout


class MyApp(App):

    def build(self):
        layout = FloatLayout() # this can be swapped with StackLayout()
        layout.add_widget(Label(text="Hello, world"))
        return layout


if __name__ == '__main__':
    MyApp().run()

编辑-

扩展上面的内容,对于一个嵌套在布局中n次的小部件,如果n是一个偶数,则该小部件的文本将变暗。这是我用来测试的代码。

import kivy
kivy.require("1.10.1")

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.stacklayout import StackLayout
from kivy.uix.floatlayout import FloatLayout


class MyApp(App):

    def build(self):
        layouts = []
        nest = 6 # with nest equal to 6, the Label's text is dimmed.
        # if nest were equal to 5, the Label's text would not be dimmed.
        for _ in range(nest):
            innerLayout = StackLayout()
            if len(layouts) != 0:
                layouts[-1].add_widget(innerLayout)
            layouts.append(innerLayout)

        layouts[-1].add_widget(Label(text="Hello, world"))
        return layouts[0]


if __name__ == '__main__':
    MyApp().run()

编辑-

我发现了另一种情况,在这种情况下,基维的文字变得莫名其妙地变暗了。当文本包含换行符(或环绕到下一行)时,第一行之后的文本将被静音。

这是一个代码段。

import kivy
kivy.require("1.10.1")

from kivy.app import App
from kivy.uix.label import Label
from kivy.uix.stacklayout import StackLayout

longStr = """
I am making this text very long with newlines so that I can prove
that the Kivy label's text is faint when it goes to the next
line. It's very finnicky and I don't know what would be causing
this issue, though it probably isn't that big of one because no
one else seems to be having it.
"""


class MyApp(App):

    def build(self):
        layout = StackLayout()
        layout.add_widget(Label(text=longStr))
        return layout


if __name__ == '__main__':
    MyApp().run()

这是受影响计算机上的样子。

long string test image

我还意识到,当作为帖子的一部分查看时,某些图像似乎根本没有任何文字,而在Imgur上,它们更易于查看(仍然不多)。我认为这是StackOverflow的轻主题。

1 个答案:

答案 0 :(得分:0)

这是最新SDL2版本中引入的错误,您可以通过运行python -m pip install kivy.deps.sdl2==0.1.18来安装稍旧的版本,或者等待新的Kivy版本(即将推出)进行修复,现在可以解决该问题。