【问题标题】:Pos_hint ans size_hint do not seem to work in my kv file and I do not know whyPos_hint 和 size_hint 似乎在我的 kv 文件中不起作用,我不知道为什么
【发布时间】:2021-01-04 10:10:27
【问题描述】:

所以,我一直在尝试一些 Kivy,我只在我的 kv 文件中引入了一个与以下 python 代码相关联的按钮:

#importing library
import kivy
kivy.require('1.11.1') #version

#importing functionality
from kivy.app import App
from kivy.uix.floatlayout import FloatLayout
from kivy.uix.widget import Widget
from kivy.properties import ObjectProperty

class FloatLayout(Widget):
    username = ObjectProperty(None)
    password = ObjectProperty(None)
    """idle code here, does nothing"""

class howyoudoin(App):
    def build(self):
        return FloatLayout()

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

这是我的 kv 文件:

<Button>:
    font_size:27
    size_hint: 1.0, 1.0
    background_color: 0.1, 0.5, 0.6, 1

<FloatLayout>:
    Button:
        pos_hint:{"top":1.0}
        id: btn
        text: "button"

不知何故,size_hint 和 pos_hint 命令对我不起作用。这将返回我的按钮,但忽略 pos_hint 和 size_hint 命令。

The button does not represent the desired position and size

所有其他属性都起作用:当我在代码中更改 font_size 时,运行中的 font_size 也会发生变化。我不知道为什么:(

【问题讨论】:

    标签: python kivy kivy-language


    【解决方案1】:

    您正在重新定义一个现有的类 (FloatLayout),通过这样做,您将它变成一个简单的 Widget,而不是 Layout。由于您的FloayLayout 不是Layout,它不尊重size_hintpos_hint。重新定义现有的类通常是一个坏主意。如果你想扩展FloatLayout,试试这样:

    #importing library
    import kivy
    
    kivy.require('1.11.1') #version
    
    #importing functionality
    from kivy.app import App
    from kivy.uix.floatlayout import FloatLayout
    from kivy.uix.widget import Widget
    from kivy.properties import ObjectProperty
    
    
    class MyFloatLayout(FloatLayout):
        username = ObjectProperty(None)
        password = ObjectProperty(None)
        """idle code here, does nothing"""
    
    
    class howyoudoin(App):
        def build(self):
            return MyFloatLayout()
    
    if __name__ == '__main__':
        howyoudoin().run()
    

    kv文件:

    <Button>:
        font_size:27
        size_hint: 1.0, 1.0
        background_color: 0.1, 0.5, 0.6, 1
    
    <MyFloatLayout>:
        Button:
            pos_hint:{"top":1.0}
            id: btn
            text: "button"
    

    在上面的代码中,MyFloatLayout 扩展了FloatLayout,因此Button 中的size_hintpos_hint 现在将被兑现。

    【讨论】:

      猜你喜欢
      • 2020-09-16
      • 1970-01-01
      • 2012-10-19
      • 1970-01-01
      • 2016-08-25
      • 2020-09-19
      • 2014-01-17
      • 2021-10-29
      • 1970-01-01
      相关资源
      最近更新 更多