Model_Dialog 在進行其他部分操作之前坠狡,必須完成目前操作泵三,可能是問題信息咽安,警告伴网,不安全的更改,選擇文件等等
大綱到視圖的操作是一個 un_Model_Dialog 非模式對話框妆棒, 直接能切換
custom_dialog
- 一個line_edit 輸入文本是偷,ok_btn 打印一下輸入的文本
class CustomDialog(QtWidgets.QDialog):
def __init__(self, parent=get_maya_main_window()):
super(CustomDialog, self).__init__(parent)
self.setWindowTitle('Custom Dialog UI')
self.setMinimumWidth(200)
# self.setWindowFlags(self.windowFlags())
self.create_widgets()
self.create_layouts()
self.create_connections()
QtCore.QMetaObject.connectSlotsByName(self)
def create_widgets(self):
self.line_edit = QtWidgets.QLineEdit()
self.btn_ok = QtWidgets.QPushButton('Ok')
def create_layouts(self):
line_layout = QtWidgets.QHBoxLayout()
line_layout.addWidget(QtWidgets.QLabel('Name: '))
line_layout.addWidget(self.line_edit)
btn_layout = QtWidgets.QHBoxLayout()
btn_layout.addStretch()
btn_layout.addWidget(self.btn_ok)
main_layout = QtWidgets.QVBoxLayout(self)
main_layout.addLayout(line_layout)
main_layout.addLayout(btn_layout)
def create_connections(self):
self.btn_ok.clicked.connect(self.accept)
# ___Slots___
def get_text(self):
return(self.line_edit.text())
有四個按鈕的 Dialog
- waring 使用 QMessageBox.waring 彈出警告信息
- folder_select 使用 QFileDialog.getExsitingDirectory() 文件對話框 得到存在的文件夾路徑
- color_select 使用 QtGui.QColor 先定義好一個顏色, 使用QtWidgets.QColorDialog.getColor() 顏色對話框, 獲取顏色募逞,打印出來
- custom_dialog 實例化CustomDialog(), 執(zhí)行狀態(tài)蛋铆, 然后是執(zhí)行狀態(tài)是接受,打印文本信息
完整代碼
rom PySide2 import QtCore, QtWidgets, QtGui
from shiboken2 import wrapInstance
import maya.OpenMayaUI as omui
import maya.cmds as cmds
def get_maya_main_window():
'''
Maya main window widget as a pyside2 python object
:return:
'''
maya_main_wnd = omui.MQtUtil.mainWindow()
return wrapInstance(long(maya_main_wnd), QtWidgets.QWidget)
class CustomDialog(QtWidgets.QDialog):
def __init__(self, parent=get_maya_main_window()):
super(CustomDialog, self).__init__(parent)
self.setWindowTitle('Custom Dialog UI')
self.setMinimumWidth(200)
# self.setWindowFlags(self.windowFlags())
self.create_widgets()
self.create_layouts()
self.create_connections()
QtCore.QMetaObject.connectSlotsByName(self)
def create_widgets(self):
self.line_edit = QtWidgets.QLineEdit()
self.btn_ok = QtWidgets.QPushButton('Ok')
def create_layouts(self):
line_layout = QtWidgets.QHBoxLayout()
line_layout.addWidget(QtWidgets.QLabel('Name: '))
line_layout.addWidget(self.line_edit)
btn_layout = QtWidgets.QHBoxLayout()
btn_layout.addStretch()
btn_layout.addWidget(self.btn_ok)
main_layout = QtWidgets.QVBoxLayout(self)
main_layout.addLayout(line_layout)
main_layout.addLayout(btn_layout)
def create_connections(self):
self.btn_ok.clicked.connect(self.accept)
# ___Slots___
def get_text(self):
return(self.line_edit.text())
class TestDialog(QtWidgets.QDialog):
def __init__(self, parent=get_maya_main_window()):
super(TestDialog, self).__init__(parent)
self.setWindowTitle('Test Dialog UI')
self.setWindowFlags(self.windowFlags())
self.initial_directory = cmds.internalVar(uerPrefDir = True)
self.initial_color = QtGui.QColor(255, 0, 0 )
self.create_widgets()
self.create_layouts()
self.create_connections()
QtCore.QMetaObject.connectSlotsByName(self)
def create_widgets(self):
self.waring_btn = QtWidgets.QPushButton('Waring')
self.forder_select_btn = QtWidgets.QPushButton('Folder Select')
self.color_select_btn = QtWidgets.QPushButton('Color Select')
self.custom_btn = QtWidgets.QPushButton('Modal(Custom)')
def create_layouts(self):
main_layout = QtWidgets.QHBoxLayout(self)
main_layout.addWidget(self.waring_btn)
main_layout.addWidget(self.forder_select_btn)
main_layout.addWidget(self.color_select_btn)
main_layout.addWidget(self.custom_btn)
def create_connections(self):
self.waring_btn.clicked.connect(self.show_waring_dialog)
self.forder_select_btn.clicked.connect(self.show_folder_select)
self.color_select_btn.clicked.connect(self.show_color_select)
self.custom_btn.clicked.connect(self.show_custom_dialog)
# ___Slots___
def show_waring_dialog(self):
QtWidgets.QMessageBox.warning(self, "Object Not Found", "Camera 'shotCam' not found")
def show_folder_select(self):
new_directory = QtWidgets.QFileDialog.getExistingDirectory(self, 'Select Folder', self.initial_directory)
if new_directory:
self.initial_directory = new_directory
print 'Selected Folder:{0}'.format(new_directory)
def show_color_select(self):
self.initial_color = QtWidgets.QColorDialog.getColor(self.initial_color, self)
print ("Red:{0} Green:{1} Blue:{2}".format(self.initial_color.red(),
self.initial_color.green(),
self.initial_color.blue()))
def show_custom_dialog(self):
custom_dialog = CustomDialog()
result = custom_dialog.exec_()
if result == QtWidgets.QDialog.Accepted:
print ("Name:{}".format(custom_dialog.get_text()))
if __name__ == '__main__':
try:
myTest_ui.close() # pylint:disable = E0601
myTest_ui.deleteLater() # pylint:disable = E0601
except:
pass
myTest_ui = TestDialog()
myTest_ui.show()