【问题标题】:GUI : How to use GridLayout using kivy in python?GUI:如何在 python 中使用 kivy 使用 GridLayout?
【发布时间】:2018-01-07 14:55:15
【问题描述】:

我正在尝试使用 kivy 和一些小部件在 python 中制作一个简单的 GUI。但是,我在放置这些小部件的确切位置时遇到了一些问题(我没有成功使用 BoxLayout)。 GUI 的设计在与此评论一起的图中给出。有人可以帮我用 kivy 画这个吗? 提前致谢。

【问题讨论】:

  • 你试过了吗?
  • 当然可以,但是使用 BoxLayout 我没有成功管理所有标签的网格位置。

标签: python user-interface kivy


【解决方案1】:

您需要嵌套一些布局。有些是BoxLayouts,方向垂直,有些是水平方向。有时,当你想要一个规则的网格时,你会使用GridLayout。您可以将Widget 用于空白空间。您在任何地方设置size_hint_xsize_hint_y(或同时使用size_hint)并保持您想要保持的比例。如果您想要固定大小,请将这些设置为 None 并相应地设置 width/height。这里有一些示例供您改进(使用按钮作为占位符):

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.lang import Builder


Builder.load_string("""
<MyWidget>:
    orientation: 'vertical'
    BoxLayout:
        size_hint_y: 0.1
        TextInput:
            size_hint_x: 0.25
        Button:
            size_hint_x: 0.15
        Button:
            size_hint_x: 0.15
        Button:
            size_hint_x: 0.15
        Button:
            size_hint_x: 0.1
        Button:
            size_hint_x: 0.1
        Button:
            size_hint_x: 0.1
    Widget:
        size_hint_y: None
        height: 10
    BoxLayout:
        size_hint_y: 0.4
        Widget:
            size_hint_x: None
            width: 10
        GridLayout:
            cols: 10
            size_hint_x: 0.8
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
            Button
        Widget:
            size_hint_x: None
            width: 10
    Widget:
        size_hint_y: 0.4
""")


class MyWidget(BoxLayout):
    pass


class MyApp(App):
    def build(self):
        return MyWidget()

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

【讨论】:

    猜你喜欢
    • 2017-12-22
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多