текст кнопки и метки не отображается - PullRequest
0 голосов
/ 25 мая 2019

Pictures Here

два окна на рисунке являются точными копиями (одна и та же строка кода), с той лишь разницей, что правое окно - это экран внутри диспетчера экрана, нокак-то окно справа не показывает тексты.

Я не уверен, в чем проблема, и не могу найти что-либо связанное с ней во время исследования.

ПРАВИЛЬНОЕ ОКНО ФАЙЛ ПИТОНА:

import kivy
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.config import Config
space = ""

x = [(a * 9), (a*16)]
Config.set('graphics', 'width', x[0])
Config.set('graphics', 'height', x[1])

class MainScreen(Screen):
    pass

class SecondScreen(Screen):
    pass

class ThirdScreen(Screen):
    pass


kv = Builder.load_file("main2.kv")
class ComplimentUI(App):
    def build(self):
        return kv
    def change_screen(self, x):
        scrnmanager = self.root.ids['sm']
        scrnmanager.current = x

if __name__ == "__main__":
    ComplimentUI().run()

ФАЙЛ СТРОИТЕЛЯ ПРАВ. ОКНА: (main2.kv)

#:include secondscreen.kv
#:include thirdscreen.kv

<MainScreen>:
    canvas.before:
         Color:
            rgb: .59, .74, .20
        Rectangle:
            size: self.size
            pos: self.pos
        FloatLayout:
            TextInput:
                pos_hint: {'center_x':1, 'top':.1}
                size_hint: .1,.1
                multiline: False
                font_size: 20
                font_name: "Dimbo Regular"
                background_normal: ''
                background_color: 0,0,0,0

            Button:
                text: "PLAY!"
                pos_hint: {'center_x':.5, 'center_y':.3}
                size_hint: .8, .17
                font_name: "Splatch"
                color: 0.15, .5, 0.2, 1
                font_size: 0.14 * self.width
                background_normal: ''
                background_color: 0,0,0,0
                on_press:
                print("pressed, navigating to prev screen")
                app.change_screen("screentwo")
                root.manager.transition.direction = "left"
                canvas.before:
                    Color:
                        rgb: 1,1, .8,1
                    RoundedRectangle:
                        size: self.size
                        pos: self.pos
                        radius: [4,]

ScreenManager:
    GridLayout:
        cols: 1
        ScreenManager:
            id: sm
        MainScreen:
            name: "screenone"
            id: screenone
        SecondScreen:
            name: "screentwo"
            id: screentwo
        ThirdScreen:
            name: "thirdscreen"
            id: thirdscreen[enter image description here][1]

ФАЙЛ ПИТОНА ЛЕВОГО ОКНА:

import kivy
from kivy.app import App
from kivy.lang import Builder
from kivy.config import Config
space = "";

x = [(a * 9), (a*16)]
Config.set('graphics', 'width', x[0])
Config.set('graphics', 'height', x[1])

kv = Builder.load_file("main.kv")
class MyMainApp(App):
    def build(self):
        return kv

if __name__ == "__main__":
    MyMainApp().run()

ФАЙЛ СТРОИТЕЛЯ ЛЕВОГО ОКНА: (main.kv)

FloatLayout:
    canvas.before:
        Color:
            rgb: .59, .74, .20
        Rectangle:
            size: self.size
            pos: self.pos
    TextInput:
        pos_hint: {'center_x':1, 'top':.1}
        size_hint: .1,.1
        multiline: False
        font_size: 20
        font_name: "Dimbo Regular"
        background_normal: ''
        background_color: 0,0,0,0

    Button:
        text: "PLAY!"
        pos_hint: {'center_x':.5, 'center_y':.3}
        size_hint: .8, .17
        font_name: "Splatch"
        color: 0.15, .5, 0.2, 1
        font_size: 0.14 * self.width
        background_normal: ''
        background_color: 0,0,0,0
        on_press:
            print("pressed, navigating to prev screen")
            app.change_screen("screentwo")
            root.manager.transition.direction = "left"
        canvas.before:
            Color:
                rgb: 1,1, .8,1
            RoundedRectangle:
                size: self.size
                pos: self.pos
                radius: [4,]

НОВОЕ РЕДАКТИРОВАНИЕ:

, как я указал в комментарии ниже, то же самоепроблема происходит с FloatLayout secondscreen.kv и thirdscreen.kv, если я поместил его в файл компоновщика левого окна, это нормально.Но когда я помещаю его в экран внутри диспетчера экрана (как в правом окне), он исчезает.та же проблема случается со всеми моими экранами.причина, по которой я ставлю mainscreen.kv, заключается в том, что он самый короткий из всех экранов, но, тем не менее, я все равно предоставлю файлы, но только 1 его версию (ту, которая используется для правого окна), поскольку они в основномте же строки.(единственное отличие заключается в добавлении первой строки имени класса и небольшом изменении отступа для соответствия уровням)

ФАЙЛ SECONDSCREEN BUILDER:

<SecondScreen>:
    FloatLayout:
        canvas.before:
            Color:
                rgb: .59, .74, .20
            Rectangle:
                size: self.size
                pos: self.pos
        TextInput:
            pos_hint: {'center_x':.5, 'center_y':.56}
            size_hint: .8, .3
            multiline: False
            font_size: 20
            font_name: "Dimbo Regular"
            background_normal: ''
            background_color: 1, 1, .8, 1

        Label:
            pos_hint: {'center_x':.5, 'center_y':.76}
            size_hint: .8, .07
            text: "NAME!"
            font_size: 0.8 * self.height
            font_name: "kidsrock"
            color: 0.15, .5, 0.2, 1
            background_color: 0,0,0,0
            canvas.before:
                Color:
                    rgb: 1,1, .8,1
                RoundedRectangle:
                    size: self.size
                    pos: self.pos
                    radius: [4,]

        Button:
            text: "<<<"
            size_hint: .28, .07
            pos_hint: {'center_x':.24, 'center_y':.1}
            font_name: "kidsrock"
            color: 0.15, .5, 0.2, 1
            font_size: 0.35 * self.width
            background_normal: ''
            background_color: 0,0,0,0
            on_press:
                print("pressed, navigating to prev screen")
                app.change_screen("screenone")
                root.manager.transition.direction = "right"
            canvas.before:
                Color:
                    rgb: 1,1, .8,1
                RoundedRectangle:
                    size: self.size
                    pos: self.pos
                    radius: [4,]
        Button:
            pos_hint: {'center_x':.8, 'center_y':.35}
            size_hint: .2, .07
            background_normal: ''
            background_color: 0,0,0,0
            color: 0.15, .5, 0.2, 1
            text: "ENTER"
            font_name: "kidsrock"
            font_size: 0.25 * self.width
            on_press:
                print("pressed, navigating to next screen")
                app.change_screen("thirdscreen")
                root.manager.transition.direction = "left"
            canvas.before:
                Color:
                    rgb: 1,1, .8,1
                RoundedRectangle:
                    size: self.size
                    pos: self.pos
                    radius: [4,]

ФАЙЛ ТРЕТЬЕГО ЭКРАНА:

<ThirdScreen>:
    FloatLayout:
        canvas.before:
            Color:
                rgb: .59, .74, .20
            Rectangle:
                size: self.size
                pos: self.pos
        TextInput:
            pos_hint: {'center_x':1, 'top':.1}
            size_hint: .1, .1
            multiline: False
            font_size: 20
            font_name: "Dimbo Regular"
            background_normal: ''
            background_color: 0, 0, 0, 0

        Label:
            pos_hint: {'center_x':.5, 'center_y':.71}
            size_hint: .8, .17
            text: "COMPLIMENT!"
            font_size: 20
            font_name: "kidsrock"
            color: 0.15, .5, 0.2, 1
            background_color: 0,0,0,0
            canvas.before:
                Color:
                    rgb: 1,1, .8,1
                RoundedRectangle:
                    size: self.size
                    pos: self.pos
                    radius: [4,]

        Button:
            pos_hint: {'center_x':.24, 'center_y':.1}
            size_hint: .28, .07
            font_name: "kidsrock"
            color: 0.15, .5, 0.2, 1
            font_size: 0.35 * self.width
            text: "<<<"
            background_normal: ''
            background_color: 0,0,0,0
            on_press:
                print("pressed, navigating to prev screen")
                app.change_screen("screentwo")
                root.manager.transition.direction = "right"
            canvas.before:
                Color:
                    rgb: 1,1, .8,1
                RoundedRectangle:
                    size: self.size
                    pos: self.pos
                    radius: [4,]

NEW- NEW EDIT!:

ОБНОВЛЕНИЕ после перезагрузки компьютера, теперь оно выглядит следующим образом.

1 Ответ

0 голосов
/ 25 мая 2019

Основная причина - текст кнопки и метки не отображается

Наиболее вероятной причиной является то, что по умолчанию цвет для текста - белый ([1, 1, 1, 1]), ицвет фона для обоих виджетов также белый.Вам нужно установить цвет текста не белый, например черный ([0, 0, 0, 1]).

Поле TextInput - не отображается

Поле TexInput не отображается в обоихокна (слева и справа) из-за background_normal: '' и background_color: 0,0,0,0.

Прокомментируйте их, и поле TextInput будет видно.

Текст кнопки «PLAY» - не отображается в правом окне

Это может быть что-то в файлах include kvнапример, secondscreen.kv и / или thirdscreen.kv, которые / создают видимость.Закомментируйте оба файла kv, чтобы решить проблему.

Пример

Следующий пример правого окна, то есть использование ScreenManager, может отображать текст Button, "PLAY""а также поле TextInput.

main-right.py

from kivy.app import App
from kivy.uix.screenmanager import Screen
from kivy.lang import Builder


class MainScreen(Screen):
    pass


class SecondScreen(Screen):
    pass


class ThirdScreen(Screen):
    pass


kv = Builder.load_string("""
# :include secondscreen.kv
# :include thirdscreen.kv

<MainScreen>:
    canvas.before:
        Color:
            rgb: .59, .74, .20
        Rectangle:
            size: self.size
            pos: self.pos
    FloatLayout:
        TextInput:
            hint_text: 'Type here'
            pos_hint: {'center_x':1, 'top':.1}
            size_hint: .1,.1
            multiline: False
            font_size: 20
            # font_name: "Dimbo Regular"
            # background_normal: ''
            # background_color: 0,0,0,0

        Button:
            text: "PLAY!"
            pos_hint: {'center_x':.5, 'center_y':.3}
            size_hint: .8, .17
            #font_name: "Splatch"
            color: 0.15, .5, 0.2, 1
            font_size: 0.14 * self.width
            background_normal: ''
            background_color: 0,0,0,0
            on_press:
                print("pressed, navigating to prev screen")
                app.change_screen("screentwo")
                root.manager.transition.direction = "left"
            canvas.before:
                Color:
                    rgba: 1, 1, .8, 1
                RoundedRectangle:
                    size: self.size
                    pos: self.pos
                    radius: [4,]

GridLayout:
    cols: 1
    ScreenManager:
        id: sm
        MainScreen:
            name: "screenone"
            id: screenone
        SecondScreen:
            name: "screentwo"
            id: screentwo
        ThirdScreen:
            name: "thirdscreen"
            id: thirdscreen
""")


class RightWindow(App):
    title = "ComplimentUI"

    def build(self):
        return kv


if __name__ == "__main__":
    RightWindow().run()

Выход

Result

...