2016-06-16 7 views
0

Я хочу создать TextInput и изменить его холст, чтобы иметь белый RoundedRectangle в фоновом режиме. Я сделал background_color прозрачным, но я не вижу этого прямоугольника позади TextInput.
Я попытался вместо этого нарисовать canvas.before и canvas.after. Оба, казалось, привели к одному: ожидаемый Rectangle покрыл курсор и текст. И хотя это ожидалось для canvas.after, я думал, canvas.before ничего не будет покрывать? Как сделать фон с помощью инструкций по холсту для TextInput?Canvas инструкция невидимая в Kivy

Вот код:

from kivy.base import runTouchApp 
from kivy.lang import Builder 
from kivy.uix.textinput import TextInput 

Builder.load_string(''' 
<Test>: 
    canvas:  # no rectangle this way 
     Color: 
      rgba: 1, 1, 1, 1 
     RoundedRectangle: 
      pos: self.pos 
      size: self.size 
    background_color: 1, 1, 1, 0 
''') 

class Test(TextInput): 
    pass 

runTouchApp(Test()) 

ответ

0

просто! Вы устанавливаете Color в холсте, который также установлен (некоторые?) И другие компоненты (возможно, напрямую через OpenGL). Поэтому вы должны «снята с охраны» это - или лучше сказать, установить его по умолчанию Color, что у вас есть уже доступ к:

from kivy.lang import Builder 
from kivy.base import runTouchApp 
from kivy.uix.textinput import TextInput 
Builder.load_string(''' 
<Test>: 
    canvas.before: 
     Color: 
      rgba: 1, 0, 0, .5 
     Rectangle: 
      pos: self.pos 
      size: self.size 
     Color: 
      rgba: root.foreground_color 
    background_color: 1,1,1,0 
''') 
class Test(TextInput): pass 
runTouchApp(Test()) 

Вы уже имеете цвета, установленные в стандартном TextInput, так что вы можете получить доступ к ним с root.

Также для получения дополнительных функций играйте с background_* объектов недвижимости. Создание image с закругленными углами, вероятно, будет лучше для производительности, если вам это нужно (мобильные телефоны), и вы можете переключаться между ними только с настройкой этих свойств, потому что TextInput автоматически управляет коммутаторами.

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