2016-12-22 3 views
0

Может кто-нибудь, пожалуйста, покажите мне, как правильно обновить цвет текста в ярлыке/кнопке в Kivy с помощью Python?Kivy Обновление текста с цветом от Python

Я хочу, чтобы иметь возможность изменять цвет, руководство пользователя предлагает язык разметки, но я пробовал и просто не могу заставить его работать. В конечном счете, я хочу изменить цвет текста в разное время суток - я могу закодировать его, просто изменив цвет текста за пределами языка Kivy?

я извлек следующее из моего кода в соответствующий (я надеюсь!) Бит, что мне нужно руководство по ..

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.screenmanager import Screen 
from kivy.properties import ObjectProperty, StringProperty 
from kivy.clock import Clock 
import time 
from datetime import datetime, timedelta 



Builder.load_string(''' 
<MainScreen>: 
    name: 'main' 
    the_time: _id_lbl_time 
    BoxLayout: 
     orientation: 'vertical' 
     Label: 
      id: _id_lbl_time 
      text: 'Time' 
      font_size: 120 
''') 


class MainScreen(Screen): 
    def update_time(self, sec): 
     MyTime = time.strftime("%H:%M:%S") 
     self.the_time.text = MyTime <--- UPDATE COLOR HERE? 

class ScreenManagerApp(App): 
    def build(self): 
     self.main_screen = MainScreen() 
     return self.main_screen 

    def on_start(self): 
     Clock.schedule_interval(self.main_screen.update_time, 1)    
#=========================================================== 

# run the App ! 
ScreenManagerApp().run() 

ответ

0

Я изменил код немного, чтобы сделать его изменить к Случайный цвет.

from kivy.app import App 
from kivy.lang import Builder 
from kivy.uix.screenmanager import Screen 
from kivy.properties import ObjectProperty, StringProperty, ListProperty 
from kivy.clock import Clock 
import time 
from datetime import datetime, timedelta 
from random import random 


Builder.load_string(''' 
<MainScreen>: 
    name: 'main' 
    the_time: _id_lbl_time 
    BoxLayout: 
     orientation: 'vertical' 
     Label: 
      color: root.color 
      id: _id_lbl_time 
      text: 'Time' 
      font_size: 120 
''') 


class MainScreen(Screen): 

    color = ListProperty([1,1,1,1]) 

    def __init__(self,**kwargs): 
     super(MainScreen,self).__init__(**kwargs) 
     Clock.schedule_interval(self.update_time, 1) 

    def update_time(self, sec): 
     MyTime = time.strftime("%H:%M:%S") 
     self.the_time.text = MyTime 
     self.color = [random(), random(), random(), 1] 



class ScreenManagerApp(App): 
    def build(self): 
     self.main_screen = MainScreen() 
     return self.main_screen 


ScreenManagerApp().run() 
+0

Yep thats working now - Спасибо и очень очень праздничный! Я был очень близок к решению тогда, когда я попробовал ListProperty, у меня просто был «color = ListProperty» в коде Kivy, а не в основном классе. – northwarks

+0

@northwarks np, да выглядит красиво :) – EL3PHANTEN

Смежные вопросы