编程学习网 > 编程语言 > Python > 如何在Python中调用Qt Designer设计好的界面文件?
2025
07-15

如何在Python中调用Qt Designer设计好的界面文件?


刚开始学Python GUI的时候,真是被Tkinter那个丑界面给整破防了。后来发现PyQt这个宝贝,界面做得跟专业软件一样漂亮,心情瞬间好了一大截。

先说说Qt Designer这个神器
用Qt Designer画界面简直不要太爽。拖拖拽拽就能做出专业级的界面,比用代码一个个控件写快了不知道多少倍。我记得第一次用的时候,半小时就搞出了一个带菜单栏、工具栏、状态栏的完整界面,要是纯代码写,估计得折腾一整天。
但是啊,设计完界面保存成.ui文件后,怎么在Python里调用?这个问题当时把我卡了好久。
方法一:用pyuic转换(我最常用的)
这是我用得最多的方法,简单粗暴。
首先把.ui文件转换成.py文件:

转换完就得到一个Python文件,里面全是界面代码。然后在主程序里这样调用:

这种方法的好处是调试方便,代码看得清楚。坏处嘛,每次修改界面都得重新转换,有点烦。
方法二:直接加载.ui文件(更优雅)
后来我发现了loadUi这个函数,可以直接加载.ui文件,省去了转换的麻烦:


这样写更简洁,修改界面后直接运行就行,不用重新转换。但有个小坑,控件名字一定要记对,不然运行时会报AttributeError,调试起来有点麻烦。
我踩过的坑
路径问题:.ui文件路径写错了,程序直接崩溃。建议用绝对路径或者os.path.join()来处理:

控件命名:Qt Designer里控件名字乱取,到Python里访问就傻眼了。建议控件命名要有意义,比如按钮叫btnSave、btnCancel,文本框叫lineEditName这样。
事件绑定时机:有次我把事件绑定写在loadUi之前,结果控件还没加载完就绑定,程序直接报错。记住,一定要先加载界面,再绑定事件。
高级用法:动态创建界面
如果你想更灵活一点,还可以这样:

这种写法适合做插件系统,不同功能模块用不同的ui文件,动态加载特别方便。
性能方面的考虑
说实话,loadUi每次都要解析.ui文件,性能确实比转换后的.py文件慢一些。但对于一般的桌面应用,这点性能差异完全可以忽略。我做过测试,一个中等复杂度的界面,loadUi加载时间大概是20-30ms,转换后的.py文件是5-10ms。
如果你的应用要频繁创建销毁窗口,建议用转换方式。如果就是普通的桌面软件,loadUi足够了,还省事。
最后的建议
刚开始学建议用loadUi方式,简单直接,改界面不用重新转换。等熟练了再考虑转换方式,毕竟生成的Python代码可以做更多自定义。
PyQt这套东西学会了真香,做出来的界面比网页应用都漂亮,关键是打包后就是个exe文件,用户双击就能用,不用搭环境。虽然打包后文件有点大,但现在硬盘便宜,无所谓了。
记住一点:Qt Designer只是画界面的工具,真正的逻辑还是要在Python里写。界面和逻辑分离,代码才好维护。别问我怎么知道的,把业务逻辑写在界面文件里,后来重构差点把我整疯了。
以上就是“如何在Python中调用Qt Designer设计好的界面文件?的详细内容,想要了解更多Python教程欢迎持续关注编程学习网。

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取