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()
結果如圖所示: