当前位置:   article > 正文

【Python】一个稍微复杂点的toga的例子_python toga布局

python toga布局

亲爱的读者,您好!

在上一篇教程中,我们学习了如何使用 Toga 构建一个简单的“Hello World”应用程序。今天,我想给大家分享一个稍微复杂一点的应用示例 —— 华氏温度和摄氏温度互换的转换器

这个应用的源代码如下:

import toga
from toga.style.pack import COLUMN, LEFT, RIGHT, ROW, Pack  

def build(app):

    # 定义组件
    c_box = toga.Box()  
    f_box = toga.Box()
    box = toga.Box() 

    c_input = toga.TextInput(readonly=True)
    f_input = toga.TextInput()

    c_label = toga.Label("摄氏度", style=Pack(text_align=LEFT))
    f_label = toga.Label("华氏度", style=Pack(text_align=LEFT))
    join_label = toga.Label("等于", style=Pack(text_align=RIGHT))

    def calculate(widget):
        try:
            c_input.value = (float(f_input.value) - 32.0) * 5.0 / 9.0  
        except ValueError:
            c_input.value = "错误"

    button = toga.Button("计算", on_press=calculate)

    # 设置组件样式和布局
    f_box.add(f_input)
    f_box.add(f_label)

    c_box.add(join_label)  
    c_box.add(c_input)
    c_box.add(c_label)

    box.add(f_box)
    box.add(c_box)
    box.add(button)

    # 设置 outer box 和 inner box 的样式
    box.style.update(direction=COLUMN, padding=10)  
    f_box.style.update(direction=ROW, padding=5)
    c_box.style.update(direction=ROW, padding=5)

    # 设置单个组件的样式
    c_input.style.update(flex=1) 
    f_input.style.update(flex=1, padding_left=210)
    c_label.style.update(width=100, padding_left=10)
    f_label.style.update(width=100, padding_left=10)
    join_label.style.update(width=200, padding_right=10)

    button.style.update(padding=15)

    return box

def main():
    return toga.App("温度转换器", "org.beeware.f_to_c", startup=build)  

if __name__ == "__main__":
    main().main_loop()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

这个示例展示了更多 Toga 的 Pack 引擎的特性。

在这个应用中,我们设置了一个外部的垂直 Box,内部包含了2个水平 Box 和一个按钮。

由于水平 Box 没有设置宽度,它们会尽量填充里面的组件。TextInput 组件设置了 flex=1,而 Label 组件有固定宽度,所以 TextInput 会被拉伸来填充水平空间。然后通过 margin 和 padding 来确保组件在垂直和水平方向对齐。

Toga 的 Pack 引擎提供了强大的布局功能,我们可以利用它来构建复杂的桌面应用程序界面。如果你想学习更多 Toga 的样式和布局用法,可以查阅 样式参考

今天的教程就到这里了,感谢您的阅读!我会继续分享一些使用 Toga 构建桌面应用的技巧和示例代码,敬请关注。希望我的内容能够对您的 Toga 学习之旅有所帮助。如果您在使用 Toga 时遇到任何问题,也欢迎在评论区讨论。再次感谢您,祝您编码愉快!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/257529
推荐阅读
相关标签
  

闽ICP备14008679号