Qt Designer,即Qt设计师,是一个强大、灵活的可视化GUI设计工具,可以帮助我们加快开发PyQt程序的速度。Qt Designer是专门用来制作PyQt程序中UI界面的工具,它生成的UI界面是一个后缀为.ui的文件。该文件使用起来非常简单,可以通过命令将ui文件转换成.py格式的文件,并被其他Python文件引用;也可以通过专门的工具,如:Eric6等进行手工转换。
说明:
Qt Designer的使用基本都是拖拽组件,配置布局,修改属性,没啥好讲的,要自己去实际操作,知道不同组件有哪些属性可以配置,有哪些布局适合需要。这里讲一些特殊的操作。
直接开启工具栏长这样
下一步只需要在动作编辑器新建动作,然后设置好图标,文字等,直接拖动到工具栏,即可实现工具栏的放置。
效果如下:
直接在资源编辑器,编辑,新建或者打开,注意要设置文件的前缀,方便程序识别文件类型,选择文件,即可在项目文件夹生成对应的qrc文件,然后把qrc文件转化成py文件,就可以在python代码中调用了(需要导入,如 import 财报)
最后生成的代码大概长这样,因为它是生成的,所以是个单独的类,这样方便主代码的调用,也方便后期的维护。
为了调用上面生成的ui文件,要自建一个主代码类,不考虑其他操作的情况下,主代码很简单,
直接把下面这段代码放在你们ui代码下面,就可以运行。
class Main_Ui(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QtWidgets.QApplication([])
main_ui = Main_Ui()
main_ui.show()
app.exec_()
这里需要注意的的地方,Main_Ui(QMainWindow, Ui_MainWindow),你得导入QMainWindow,注意你自己的ui类名,虽然一般生成的都是Ui_MainWindow;至于你要绑定其他的操作,只需要在自定义的主函数初始化的地方绑定即可( self.setupUi(self)之后)
Designer生成的是ui结尾的文件,那如何使用呢?有三种方法。
python -m PyQt5.uic.pyuic 12组重点链接跟进.ui -o 12组重点链接跟进.py
这里需要注意的有两点,不然没法转成功。一是你的环境变量已经添加了python的路径;二是操作的时候必须在ui文件所在的文件夹(cd 文件路径跳转)。
Anaconda自带Prompt运行如下代码:
pyuic5 demo.ui -o demo.py
需要注意的还是操作的时候必须在ui文件所在的文件夹(cd 文件路径跳转)。
为了PyCharm更方便的使用,需要配置两个,一个是Qt designer,一个是PyUIC,前者直接打开Qt designer,后者把ui文件转换成py文件,方便后续使用。
点击File->Settings,找到Tools选项,点击“+”号,后续配置如图:
配置Qt designer
参数说明:
Program:这里就是你安装PyQt5-tools里面的designer.exe
Work directory:使用变量$FileDir$
配置PyUIC
参数说明:
Program:这里就是你安装的python编译的里面的python.exe
Arguments:D:\Anaconda\Lib\site-packages\PyQt5\uic\pyuic.py $FileName$ -o $FileNameWithoutExtension$.py (自己的路径+后面那段)
Work directory:使用变量$ProjectFileDir$或者$FileDir$,两者的区别在于执行时文件夹是项目所在文件夹还是用户指定的任意文件夹。
设置完成拓展工具后,右键ui文件选择external tools的PyUIC,即可自动生成。
pyrcc5 resource.qrc -o resource_rc.py
参数说明:
Program:这里就是你安装的pyrcc5.exe的位置(这个是自带的,不需要自己安装,找到位置就好)
Arguments:$FileName$ -o $FileNameWithoutExtension$.py
Work directory:使用变量$ProjectFileDir$或者$FileDir$,两者的区别在于执行时文件夹是项目所在文件夹还是用户指定的任意文件夹。
设置完成拓展工具后,右键qrc文件选择external tools的qrc tool,即可自动生成。
生成的文件长这样:
学完这一节,你应该已经配置好环境,设计了自己ui界面了吧,持续更新中…
…