1. 程式人生 > >pythonocc入門指導:3.建立屬於自己的主介面及對話方塊及安裝qtdesigner

pythonocc入門指導:3.建立屬於自己的主介面及對話方塊及安裝qtdesigner

已經更新的入門指導

PythonOCC入門指導:1.建立pythonocc虛擬環境
PythonOCC入門指導:2.執行一個簡單例項
PythonOCC入門指導:3.建立屬於自己的主介面及對話方塊及安裝qtdesigner
pythonocc基礎使用:1.讀入iges,step,stl檔案
pythonocc基礎使用:2.提取曲線上的點位資訊或者曲面上的點位資訊

上一篇:執行一個例項
在實際的專案中,我們想要實現良好的與使用者的互動,圖形介面是我們不能忽視的部分。接下來的內容,我們會講到

1. 安裝圖形介面設計工具——QTdesigner
2.主介面新增選單欄
3.彈出自定義對話方塊

一、安裝QTdesigner

我們安裝的pythonocc虛擬環境已經包含了pyqt的相關檔案,但是缺少了qtdesigner
qtdesigner也就是視覺化的圖形介面設計器,可以讓你通過簡單的拖拉拽實現圖形介面的設計(如:主介面,對話方塊等),具體安裝步驟如下:

1.下載一個pyqt5-tool.whl檔案:

連結:https://pan.baidu.com/s/1V-xdaFbR1R_3xswbQvyfTA
提取碼:5t3z

將此檔案放在anaconda prompt 預設進入的資料夾(比如我的是 C:\Users\Administrator)

2.啟用工具

然後程式程式碼(在 anaconda prompt中輸入):

activate pythonocc #啟用pythonocc環境
pip install  PyQt5_Tools-5.7.dev1-py3-none-any.whl 在此環境中安裝此包

在這裡插入圖片描述

然後在(我的是在這裡)D:\ProgramData\Anaconda3\envs\pythonocc\Lib\site-packages\PyQt5-tools\designer
找到qtdesigner在這裡插入圖片描述

3.在pycharm中新增該工具

開啟pycharm,進入externa tool 建立一個新的專案,按照圖片中的內容命名即可:
在program選項中找到designer.exe(我的是在D:\ProgramData\Anaconda3\envs\pythonocc\Lib\site-packages\PyQt5-tools\designer\designer.exe


在working directory 輸入:$FileDir$

然後ok–>apply後,試著執行一下
在這裡插入圖片描述

在左側區域右鍵,開啟qtdesigner

在這裡插入圖片描述

出現如下介面則為成功:
在這裡插入圖片描述

二、主介面新增選單欄

程式碼如下:(同時你可以在這裡獲得程式碼檔案:https://download.csdn.net/download/weixin_42755384/10838771)

#主頁新增選單欄,並在子選單中可以開啟檔案選擇對話方塊
from OCC.Display.SimpleGui import init_display
from OCC.gp import gp_Pnt
from PyQt5.QtWidgets import QFileDialog

if __name__ == '__main__':
    display, start_display, add_menu, add_function_to_menu = init_display()
    P0=gp_Pnt(0,0,1)
    P1 =gp_Pnt(0, 30, 20)

    menu_name = '開啟'
    menu_name2 = '繪製模型'
    add_menu(menu_name)
    add_menu(menu_name2)
    add_function_to_menu(menu_name, QFileDialog.getOpenFileName)
    start_display()

效果圖如下:
在這裡插入圖片描述

三、彈出自定義對話方塊

(以下程式檔案可在該處下載:(有兩個檔案)https://download.csdn.net/download/weixin_42755384/10838823)

1.使用pyqtdesigner 設計一個對話方塊

如(一)中所介紹,從external tool中開啟qtdesigner,選擇dialog with button
在這裡插入圖片描述
隨便設計一個頁面
在這裡插入圖片描述
設計好後,使用pyuic(此處不詳述,可以自行百度)將ui介面轉成py程式
mydialog.py

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mydialog.ui'
#
# Created by: PyQt5 UI code generator 5.6
#
# WARNING! All changes made in this file will be lost!

from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Dialog(object):
    def setupUi(self, Dialog):
        Dialog.setObjectName("Dialog")
        Dialog.resize(400, 300)
        self.buttonBox = QtWidgets.QDialogButtonBox(Dialog)
        self.buttonBox.setGeometry(QtCore.QRect(30, 240, 341, 32))
        self.buttonBox.setOrientation(QtCore.Qt.Horizontal)
        self.buttonBox.setStandardButtons(QtWidgets.QDialogButtonBox.Cancel|QtWidgets.QDialogButtonBox.Ok)
        self.buttonBox.setObjectName("buttonBox")
        self.pushButton = QtWidgets.QPushButton(Dialog)
        self.pushButton.setGeometry(QtCore.QRect(180, 110, 93, 28))
        self.pushButton.setObjectName("pushButton")

        self.retranslateUi(Dialog)
        self.buttonBox.accepted.connect(Dialog.accept)
        self.buttonBox.rejected.connect(Dialog.reject)
        QtCore.QMetaObject.connectSlotsByName(Dialog)

    def retranslateUi(self, Dialog):
        _translate = QtCore.QCoreApplication.translate
        Dialog.setWindowTitle(_translate("Dialog", "Dialog"))
        self.pushButton.setText(_translate("Dialog", "PushButton"))

2.主函式(並在主函式中呼叫自定義對話方塊)

test2.py
(實現點選一個點彈出自定義對話方塊)

import sys
from OCC.Display.SimpleGui import init_display
from OCC.gp import gp_Pnt
from mydialog import* #呼叫自定義對話方塊


def mydialog(shp,*argus):
    for point in shp:
        myDialog = QtWidgets.QDialog()
        ui = Ui_Dialog()
        ui.setupUi(myDialog)  # setupUi()是由.ui檔案生成的類的建構函式(初始化介面)
        myDialog.show()
        sys.exit(myDialog.exec_())  # 如果沒有這個函式,則對話方塊閃退


if __name__ == '__main__':
    display, start_display, add_menu, add_function_to_menu = init_display()
    P0=gp_Pnt(0,0,1)
    P1 =gp_Pnt(0, 30, 20)
    menu_name = '開啟'
    menu_name2 = '繪製模型'
    add_menu(menu_name)
    add_menu(menu_name2)
    display.DisplayShape(P0)
    display.SetSelectionModeVertex()  # 啟動點的選中功能
    display.register_select_callback(mydialog)   #點選執行對話方塊
    start_display()

結果如圖所示:
在這裡插入圖片描述