赞
踩
亲爱的读者,您好!
在上一篇教程中,我们学习了如何使用 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()
这个示例展示了更多 Toga 的 Pack 引擎的特性。
在这个应用中,我们设置了一个外部的垂直 Box,内部包含了2个水平 Box 和一个按钮。
由于水平 Box 没有设置宽度,它们会尽量填充里面的组件。TextInput 组件设置了 flex=1
,而 Label 组件有固定宽度,所以 TextInput 会被拉伸来填充水平空间。然后通过 margin 和 padding 来确保组件在垂直和水平方向对齐。
Toga 的 Pack 引擎提供了强大的布局功能,我们可以利用它来构建复杂的桌面应用程序界面。如果你想学习更多 Toga 的样式和布局用法,可以查阅 样式参考。
今天的教程就到这里了,感谢您的阅读!我会继续分享一些使用 Toga 构建桌面应用的技巧和示例代码,敬请关注。希望我的内容能够对您的 Toga 学习之旅有所帮助。如果您在使用 Toga 时遇到任何问题,也欢迎在评论区讨论。再次感谢您,祝您编码愉快!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。