Kivy:获取根小部件大小

时间:2015-04-26 12:03:50

标签: layout canvas widget size kivy

我想获得根小部件的大小,以便我可以用它来计算子小部件的大小和位置。这是我的简单代码:

from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.button import Button

class PictoGame(FloatLayout):
    def __init__(self):
        FloatLayout.__init__(self)
        self.add_widget(Button(text = "Button 1", size = (10,10)) ) 


class PictoApp(App):
    def build(self):
        my_game = PictoGame()
        print str(my_game.size)
        return my_game

PictoApp().run()

打印出的尺寸是[1,1]?我看到的是大窗户,所以不能[1,1] 按钮占据窗口的完整大小,而不是(10,10)。我想要。

必须有一些我错过的kivy概念。请帮助我,非常感谢。

3 个答案:

答案 0 :(得分:0)

使用kivy,您通常不应该尝试手动管理这样的大小 - 您可以这样做,但这是更难的方法。相反,使用布局为您完成工作。

我举个例子,但我不确定你要做什么。

如果您确定要手动完成所有操作,可以使用Clock.schedule(some_function,0)来安排一个根据您的喜好设置大小和位置的功能。只有确定了所有内容的大小后,时钟才会调用它。

答案 1 :(得分:0)

您是否尝试过使用size_hint_y,size_hint_x和pos_hint?

Button:
    size_hint_x: .25
    size_hint_y: .1
    pos_hint: {'x': .375, 'y': .25}

这将有助于根据窗口大小自动调整按钮的大小和位置。

答案 2 :(得分:0)

窗口大小(由@inclement对另一个答案的评论)位于kivy.core.window.Window.size

一个简单的用法是:

from kivy.core.window import Window

...

window_width, window_height = Window.size

变量window_widthwindow_height将获得根窗口的大小。