Bill Bridge
Bill Bridge

Reputation: 841

why is text in Kivy spinner vague / blurry

I have a spinner used to select items as dropdown. The text in the textfield itself is normal. But the text in the spinner items looks blurry/vague, see the attached image. How could I resolve this?

enter image description here

The source file qmonos.py:

from kivy.app import App
from kivy.core.window import Window
from kivy.uix.boxlayout import BoxLayout

class qmonosHome(BoxLayout):


    def init_qmonos(self):

        self.objtype.text = ''
        self.objtype.values = ('Home', 'Work', 'Other', 'Custom')


class qmonosApp(App):
    def build(self):
        Window.clearcolor = (.95,.95,.95,1)
        Window.size = (800, 200)
        homeWin = qmonosHome()
        homeWin.init_qmonos()
        return homeWin
qmonosApp().run()

The kivy file qmonos.kv

# File: qmonos.kv
#:import Factory kivy.factory.Factory

#:set color_button (.5,1,1,1)
#:set color_button_pressed (0.7,0.9,1,1)
#:set color_font (1,1,1,1)


<MySpinnerOption@SpinnerOption>:
    background_color: color_button if self.state == 'down' else color_button_pressed
    color: color_font
    font_size: 12
    text_size: self.width - 10, self.height
    height: 25

<qmonosHome>:
    objtype:objtype

    BoxLayout:
        orientation: "horizontal"
        padding: 10,10,10,10

        BoxLayout
            orientation: "vertical"
            size_hint: 0.5,1

            BoxLayout:
                orientation: "horizontal"
                height: "20dp"
                size_hint_y: None

                Label:
                    text: "Hello World"
                    size_hint: 1,1
                    size: self.texture_size
                    halign: 'left'
                    valign: 'middle'
                    font_size: 12
                    color: .3,.3,.3,1
        BoxLayout
            orientation: "vertical"
            size_hint: 0.5,1
            padding: 10,0,10,0

            BoxLayout:
                orientation: "horizontal"
                height: "20dp"
                size_hint_y: None

                Label:
                    text: "Type Object:"
                    size_hint: 0.25,1
                    size: self.texture_size
                    halign: 'left'
                    valign: 'middle'
                    font_size: 12
                    color: .3,.3,.3,1

                Spinner:
                    id: objtype
                    text: ''
                    background_color: color_button if self.state == 'normal' else color_button_pressed
                    color: color_font
                    option_cls: Factory.get("MySpinnerOption")
                    font_size: 12
                    text_size: self.width - 10, self.height
                    size_hint: 0.25,1
                    multiline: False
                    foreground_color: .3,.3,.3,1
                    disabled_foreground_color: .3,.3,.3,1

                Label:
                    text: "Hello too"
                    size_hint: 0.5,1
                    size: self.texture_size
                    halign: 'left'
                    valign: 'middle'
                    font_size: 12
                    color: .3,.3,.3,1

Upvotes: 2

Views: 1463

Answers (1)

illright
illright

Reputation: 4043

This is a known issue in Kivy, that apparently hasn't been fixed yet. Refer to those links for more info on this case: GitHub, Google Groups, Bountysource. They tell that the issue is that the text is not drawn on the whole pixel, but rather on a part of it.
An unexpected solution in your case: mess around with the padding. Is it important for the padding to be exactly 10? Because I've found out that (12, 12, 12, 12) works perfectly and the text is sharp. That's kinda strange, but I hope it works for you. That's as far as I can help you with this problem.
You could address this issue to Kivy devs, but considering it was discovered in 2014, I'm surprised it wasn't fixed.

Upvotes: 1

Related Questions