日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python 中 PyQt5 + pycharm 调用 Qt Designer,将.ui文件转换成 .py 文件

發(fā)布時間:2024/7/23 python 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 中 PyQt5 + pycharm 调用 Qt Designer,将.ui文件转换成 .py 文件 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

From:https://blog.csdn.net/qq_40666028/article/details/81069878

基于Qt Designer 和 pyuic 開發(fā) UI 界面的方法:https://blog.csdn.net/philipyou/article/details/80309339
QtDesigner 安裝:http://code.py40.com/2540.html
用 QtDesigner 設(shè)計第一個界面:http://code.py40.com/2561.html

?

使用 python 進(jìn)行開發(fā)過程中,不可避免會用到圖形用戶界面(Graphical User Interface,GUI),目前常用的 GUI 控件集有PyQt、Tkinter、wxPython、PyGTK 等。?
本文選用的控件集為 PyQt5,開發(fā)環(huán)境如下:

安裝包版本號
windows1064bit
PyCharm2019.1.3
python3.7.4
PyQt55.10

?

?

1. PyCharm 中添加 Qt Designer 工具

?

  • 在 “File?—>?Settings?—>?Tools?—> External Tools” 中點擊 “+” 號,添加外部工具;
  • Program中填入“designer.exe”的路徑。eg. D:\ProgramData\Anaconda2\Library\bin\designer.exe;
  • Working directory 中填入 $FileDir$
  • 可以根據(jù)自己的? python 安裝 情況 填寫。截圖:

    ?

    ?

    2. PyCharm 中添加 Pyuic 工具

    ?

  • 在“File —> Settings —> Tools —> External Tools”中點擊 “+” 號,添加外部工具
  • Program中填入“python.exe”的路徑。eg. D:\ProgramData\Anaconda2\python.exe
  • Parameters中填入 -m PyQt5.uic.pyuic $FileName$ -o $FileNameWithoutExtension$.py
  • Working directory中填入 $ProjectFileDir$
  • 可以根據(jù)自己的? python 安裝 情況 填寫。截圖:

    系統(tǒng)自定義 宏參數(shù)( 點擊 宏參數(shù) 時 可以實時顯示對應(yīng)當(dāng)前工程 的 值?):

    ?

    注意:如果不填寫 Arguments 這個選項時,在 Pycharm 中, 點擊 .ui 文件 -> 然后右鍵 ->?ExternalTools -> PyUIC 沒法生成? .py 文件。只有通過命令行 生成 .py 文件:pyuic5.exe test.ui -o test.py。只要操作系統(tǒng)上正確配置python環(huán)境之后,pyuic5 也是一個可以識別的命令行指令。

    cmd 中打開 xxx.ui 所在路徑例
    然后輸入:pyuic5 -o xxx.py xxx.ui 回車。
    其中:
    ? ? ? ? -o 后的參數(shù)為 輸出文件 的 名稱?
    ? ? ? ? -o 后第二個參數(shù)即為生成的 ui文件 的 名稱

    ?

    ?

    3. 設(shè)計 UI 文件 并轉(zhuǎn)換成 .py 文件

    ?

    將 Qt Desiginer 設(shè)計的界面保存為?.ui?文件,在 PyCharm 中選中此文件,用添加的外部工具?Pyuic?轉(zhuǎn)換成同名的?.py文件。?
    生成的?.py文件中只有一個從?object類繼承的?Ui_MainWindow的類,無法運行,需要新建一個python文件調(diào)用。

    如果上面 pyuic 添加了 Arguments 參數(shù),生成 .py 文件很簡單右鍵.ui文件 -> External Tools -> pyUIC,即可自動生成??

    ?

    ?

    4. 運行 .py 文件

    ?

    PyQt5基本功能:http://code.py40.com/1961.html

    ?

    這個時候直接運行 .py 文件,發(fā)現(xiàn)圖形界面不會顯示。

    有兩種方法可以顯示界面。

    ?

    方法 1 :直接運行這個 .py文件 就能看到界面的方式

    ?

    在文件末尾加上這一段代碼:

    if __name__ == "__main__":import sysapp = QtWidgets.QApplication(sys.argv) # 創(chuàng)建一個QApplication,也就是你要開發(fā)的軟件appMainWindow = QtWidgets.QMainWindow() # 創(chuàng)建一個QMainWindow,用來裝載你需要的各種組件、控件# MainWindow = QtWidgets.QWidget() # 創(chuàng)建一個QMainWindow,用來裝載你需要的各種組件、控件ui = Ui_Form() # ui是你創(chuàng)建的ui類的實例化對象ui.setupUi(MainWindow) # 執(zhí)行類中的setupUi方法,方法的參數(shù)是第二步中創(chuàng)建的QMainWindowMainWindow.show() # 執(zhí)行QMainWindow的show()方法,顯示這個QMainWindowsys.exit(app.exec_()) # 使用exit()或者點擊關(guān)閉按鈕退出QApplication

    然后?右鍵 -> run 就可以看到界面了

    widget = QtWidgets.QWidget()?
    因為Qt Designer默認(rèn)繼承的object類,不提供show()顯示方法,所以我們生成一個 QWidget 對象來重載我們設(shè)計的Ui_MainWindow類,達(dá)到顯示效果。

    app.exec_()? ? ? ? ? ? ? ? ? 運行app?
    sys.exit(app.exec_()) ? 消息循環(huán)結(jié)束之后返回0,接著調(diào)用 sys.exit(0) 退出程序

    ?

    完整示例代碼( temp.py ):

    # -*- coding: utf-8 -*- # @Author : # @File : temp.py # @Software: PyCharm # @description : XXXfrom PyQt5 import QtCore, QtGui, QtWidgets import sysclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(400, 300)self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(70, 220, 75, 23))self.pushButton.setObjectName("pushButton")self.pushButton_2 = QtWidgets.QPushButton(Form)self.pushButton_2.setGeometry(QtCore.QRect(220, 220, 75, 23))self.pushButton_2.setObjectName("pushButton_2")self.checkBox = QtWidgets.QCheckBox(Form)self.checkBox.setGeometry(QtCore.QRect(70, 180, 141, 16))self.checkBox.setObjectName("checkBox")self.lineEdit = QtWidgets.QLineEdit(Form)self.lineEdit.setGeometry(QtCore.QRect(130, 56, 181, 20))self.lineEdit.setObjectName("lineEdit")self.lineEdit_2 = QtWidgets.QLineEdit(Form)self.lineEdit_2.setGeometry(QtCore.QRect(130, 110, 181, 20))self.lineEdit_2.setObjectName("lineEdit_2")self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(70, 60, 54, 12))self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(Form)self.label_2.setGeometry(QtCore.QRect(70, 110, 54, 12))self.label_2.setObjectName("label_2")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))self.pushButton.setText(_translate("Form", "取消"))self.pushButton_2.setText(_translate("Form", "確定"))self.checkBox.setText(_translate("Form", "記住用戶名和密碼"))self.label.setText(_translate("Form", "用戶名:"))self.label_2.setText(_translate("Form", "密碼:"))if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv) # 創(chuàng)建一個QApplication,也就是你要開發(fā)的軟件appMainWindow = QtWidgets.QMainWindow() # 創(chuàng)建一個QMainWindow,用來裝載你需要的各種組件、控件ui = Ui_Form() # ui是你創(chuàng)建的ui類的實例化對象ui.setupUi(MainWindow) # 執(zhí)行類中的setupUi方法,方法的參數(shù)是第二步中創(chuàng)建的QMainWindowMainWindow.show() # 執(zhí)行QMainWindow的show()方法,顯示這個QMainWindowsys.exit(app.exec_()) # 使用exit()或者點擊關(guān)閉按鈕退出QApplication

    程序云截圖:

    ?

    ?

    方法 2:在 別的文件 中 調(diào)用 這個模塊

    ?

    這個和 方法 1 中的 右鍵?run 就能顯示界面的方式?并不沖突,只是要在別的文件中調(diào)用這個模塊。

    調(diào)用文件的寫法( main.py ):

    # -*- coding: utf-8 -*- # @Author : # @File : main.py # @Software: PyCharm # @description : XXXimport sys from temp import Ui_Form from PyQt5 import QtWidgets# 這個類繼承界面UI類 class MyWindow1(QtWidgets.QWidget, Ui_Form):def __init__(self):super(MyWindow1, self).__init__()self.setupUi(self)# 這個類繼承界面UI類 class MyWindow2(QtWidgets.QMainWindow, Ui_Form):def __init__(self):super(MyWindow2, self).__init__()self.setupUi(self)# 調(diào)用show if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)form_1 = MyWindow1()form_1.setWindowTitle('form_1')form_1.show()form_2 = MyWindow2()form_2.setWindowTitle('form_2')form_2.show()sys.exit(app.exec_())

    被調(diào)用文件( temp.py )和上面 temp.py 文件一樣

    # -*- coding: utf-8 -*- # @Author : # @File : temp.py # @Software: PyCharm # @description : XXXfrom PyQt5 import QtCore, QtGui, QtWidgets import sysclass Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(400, 300)self.pushButton = QtWidgets.QPushButton(Form)self.pushButton.setGeometry(QtCore.QRect(70, 220, 75, 23))self.pushButton.setObjectName("pushButton")self.pushButton_2 = QtWidgets.QPushButton(Form)self.pushButton_2.setGeometry(QtCore.QRect(220, 220, 75, 23))self.pushButton_2.setObjectName("pushButton_2")self.checkBox = QtWidgets.QCheckBox(Form)self.checkBox.setGeometry(QtCore.QRect(70, 180, 141, 16))self.checkBox.setObjectName("checkBox")self.lineEdit = QtWidgets.QLineEdit(Form)self.lineEdit.setGeometry(QtCore.QRect(130, 56, 181, 20))self.lineEdit.setObjectName("lineEdit")self.lineEdit_2 = QtWidgets.QLineEdit(Form)self.lineEdit_2.setGeometry(QtCore.QRect(130, 110, 181, 20))self.lineEdit_2.setObjectName("lineEdit_2")self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(70, 60, 54, 12))self.label.setObjectName("label")self.label_2 = QtWidgets.QLabel(Form)self.label_2.setGeometry(QtCore.QRect(70, 110, 54, 12))self.label_2.setObjectName("label_2")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))self.pushButton.setText(_translate("Form", "取消"))self.pushButton_2.setText(_translate("Form", "確定"))self.checkBox.setText(_translate("Form", "記住用戶名和密碼"))self.label.setText(_translate("Form", "用戶名:"))self.label_2.setText(_translate("Form", "密碼:"))if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv) # 創(chuàng)建一個QApplication,也就是你要開發(fā)的軟件appMainWindow = QtWidgets.QMainWindow() # 創(chuàng)建一個QMainWindow,用來裝載你需要的各種組件、控件ui = Ui_Form() # ui是你創(chuàng)建的ui類的實例化對象ui.setupUi(MainWindow) # 執(zhí)行類中的setupUi方法,方法的參數(shù)是第二步中創(chuàng)建的QMainWindowMainWindow.show() # 執(zhí)行QMainWindow的show()方法,顯示這個QMainWindowsys.exit(app.exec_()) # 使用exit()或者點擊關(guān)閉按鈕退出QApplication

    程序運行截圖:

    ?

    ?

    ?

    ?

    總結(jié)

    以上是生活随笔為你收集整理的Python 中 PyQt5 + pycharm 调用 Qt Designer,将.ui文件转换成 .py 文件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文不卡在线 | 国产经典一区二区三区 | 涩涩的视频在线观看 | 人妻精品无码一区二区三区 | 亚洲看片网 | 欧美丝袜一区二区 | 黄色a级片网站 | 日韩网 | 日韩av手机在线观看 | 亚洲精品一区中文字幕乱码 | 打屁股外国网站 | 黄色小网站入口 | 综合亚洲色图 | 999热精品| 成人精品毛片 | av电影在线观看 | 欧美日韩国产激情 | 亚洲女人天堂成人av在线 | 成人天堂av | 久久久免费毛片 | 国产主播在线一区 | 久久久久中文字幕 | 久久久www成人免费无遮挡大片 | 九九国产 | 国产美女免费 | 日本高清不卡在线观看 | 男人的天堂免费视频 | 韩国妻子的朋友 | a久久久久| 国产精品无码网站 | 天天摸天天操天天干 | 日本少妇bb | 性xxxfllreexxx少妇 | 欧美色图13p| 老司机午夜影院 | 99re6在线视频 | 欧美三级中文字幕 | 波多野结衣一区二区三区中文字幕 | 国产免费一区二区视频 | 伊人久久国产 | 麻豆小视频 | 射精一区二区 | 日本韩国欧美在线 | 91麻豆国产| 国产精品7 | 国产精品久久久久久久一区探花 | 蜜桃av噜噜一区二区三区网址 | 2019中文字幕在线视频 | 国产伦精品一区二区三区精品 | 无码人妻久久一区二区三区不卡 | 成人精品视频在线播放 | 日韩在线电影一区 | 亚洲免费av在线 | 青青草综合 | 国产福利合集 | 欧美xxxxbbbb| 国产三级自拍 | 亚洲精品乱码久久久久久久 | 欧美日韩国产91 | 欧美亚洲国产日韩 | 日本ww色 | 蜜桃视频在线观看网站 | 91视频a| 伊人天堂av | 欧美日韩亚洲另类 | 亚洲日本综合 | 天天插天天色 | 色婷婷国产 | 伊在线久久丫 | 精品国产视频一区二区 | 国产午夜精品一区二区 | 一区二区三区四区五区在线视频 | 雨宫琴音一区二区三区 | 国产伦精品一区 | 国产情侣小视频 | 国产黄片一区二区三区 | 噼里啪啦动漫高清在线观看 | 久久亚洲AV成人无码国产野外 | 精品女厕偷拍一区二区 | 天天干导航 | 亚洲一区视频在线 | 91桃色视频在线观看 | 国产又粗又猛又黄又爽视频 | 9l视频自拍蝌蚪9l视频 | 欧美老熟 | 国产男女猛烈无遮挡免费视频动漫 | 中文字幕无码av波多野吉衣 | a天堂中文在线 | 欧洲性开放大片 | 短篇山村男同肉耽h | 最近中文字幕在线中文高清版 | 成人免费黄色av | 国产chinesehd精品露脸 | 精品视频一区二区三区四区 | 亚洲同性gay激情无套 | 国产男男gay体育生网站 | 国产精品视频一区二区三区, | 色视频在线观看免费 | 婷婷综合另类小说色区 |