【问题标题】:Kivy: get the root widget sizeKivy:获取根部件大小
【发布时间】:2015-07-04 19:43:15
【问题描述】:

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

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 的概念。请帮帮我,非常感谢。

【问题讨论】:

  • 我假设您想要计算子小部件(按钮)的大小,以便您可以根据自己的喜好放置和调整大小。这不是解决问题的方法。你应该去看看 kivy.org 网站上的一些教程。

标签: layout canvas widget size kivy


【解决方案1】:

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

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

如果您确定要手动执行所有操作,则可以使用 Clock.schedule(some_function, 0) 来安排一个函数,根据自己的喜好设置大小和位置。只有在确定所有内容的大小后,时钟才应调用它。

【讨论】:

  • 我尝试的是获取窗口的实际大小。现在显示 [1,1]
  • 窗口大小由kivy.core.window.Window.size给出
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    一个简单的用法是:

    from kivy.core.window import Window
    
    ...
    
    window_width, window_height = Window.size
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多