我有以下代码:
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执行时调整窗口小部件的大小?
答案 0 :(得分:2)
使用布局(如BoxLayout),它将为您管理重新调整大小
def build(self):
parent = BoxLayout() #the only line changed
self.painter = CanvasWidget()
parent.add_widget(self.painter)
return parent
当您的父级是Widget时,它没有任何处理子级大小的功能