У меня есть текстура, которую я хочу повторить внутри Rectangle
, нарисованной canvas.before
. Проблема в том, что я не знаю, какой будет размер Rectangle
(он используется в качестве фона для виджета).
Например, у меня есть Rectangle
, который имеет 48
px высота и ширина 100
- 500
px. Я хочу заполнить его содержимое, повторяя текстуру 48x48
по горизонтали.
Я знаю и попробовал установить texture.wrap = 'repeat'
и texture.uvsize
, и она работает правильно, но только если я заранее знаю размер виджета. Например, установка uvsize = (3, 1)
для виджета с размером 144x48
работает нормально.
Однако это не работает, когда я хочу обновить uvsize
перед перерисовкой виджета. Я создал обратный вызов Canvas и обновил uvsize
там, но это по какой-то причине не действует:
...
with self.canvas.before:
self.cb = Callback(self.on_canvas_redraw)
...
def on_canvas_redraw(self, instr):
self.texture.uvsize = (self.width / 48, 1)
Так как я могу динамически обновить uvsize
? Или есть лучший способ для изменения размера виджета или лучший способ для этого?