当窗口调整大小时,如何让Kivy刷新小部件的大小?

时间:2016-01-15 03:08:33

标签: python kivy

我有以下代码:

import logging
from kivy.app import App
from kivy.uix.widget import Widget

logger = logging.getLogger(__name__)
logger.addHandler(logging.FileHandler('waynepaint.log'))
logger.handlers[0].setFormatter(logging.Formatter('%(asctime)s:%(levelname)s:%(name)s:%(message)s'))
logger.setLevel(logging.DEBUG)


class CanvasWidget(Widget):
    def on_touch_down(self, touch):
        logger.debug('Size: %r', self.size)


class WaynePaintApp(App):

    def build(self):
        parent = Widget()
        self.painter = CanvasWidget()
        parent.add_widget(self.painter)
        return parent

if __name__ == '__main__':
    WaynePaintApp().run()

您可以随意更改窗口大小,但每次单击屏幕时,都会报告Size: [100, 100]。现在,我知道的大小会大于此值,如果添加from kivy.core.window import Window然后使用Window.size,您会看到窗口大小发生变化。但不是小部件的大小。

如何在Window执行时调整窗口小部件的大小?

1 个答案:

答案 0 :(得分:2)

使用布局(如BoxLayout),它将为您管理重新调整大小

def build(self):

    parent = BoxLayout() #the only line changed
    self.painter = CanvasWidget()
    parent.add_widget(self.painter)
    return parent

当您的父级是Widget时,它没有任何处理子级大小的功能