# 可以直接在编辑器运行。
import maya.OpenMayaUI as omui
try:
from PySide2 import QtGui, QtWidgets ,QtCore
except ImportError:
from PySide import QtGui, QtWidgets ,QtCore
from functools import partial
try:
from shiboken2 import wrapInstance
except:
from shiboken import wrapInstance
# 让maya为主窗口,使我们创建的界面在maya窗口前面
def _get_maya_main_window():
pointer = omui.MQtUtil.mainWindow()
return wrapInstance(long(pointer), QtWidgets.QWidget)
# 每一行设计
class Linelayout(QtWidgets.QDialog):
def __init__(self, *arg):
super(Linelayout, self).__init__()
widget = QtWidgets.QHBoxLayout(self)
k = 0
for i in arg[0]:
if k%3 ==0:
self.buttons = QtWidgets.QLabel(i)
elif k%3 ==2:
self.buttons = QtWidgets.QPushButton(i)
self.buttons.clicked.connect(partial(self.showpage, i ,arg[0][k-1]))
else:
print i
k = k+1
widget.addWidget(self.buttons)
self.setLayout(widget)
def showpage(self,mk,func):
try:
func()
except:
print mk
def functionname(self):
print "X"
# mytest = Linelayout("SS","SS")
# mytest.show()
# 中心窗口设计
class CenterWidget(QtWidgets.QWidget):
def __init__(self):
super(CenterWidget, self).__init__()
self.initUI()
def initUI(self):
self.setWindowTitle('grid layout')
# 数据与ui分离,或者存数据库
name =[
[u'检查1', 'functionname1', u'修正'],
[u'检查2', 'functionname2', u'选择'],
[u'检查3', 'functionname3', u'确定'],
[u'检查4', 'functionname4', u'删除'],
]
QVBoxLayout = QtWidgets.QVBoxLayout(self)
j = 0
self.btns = []
for i in name:
self.buttonx = Linelayout(i)
self.btns.append(self.buttonx)
QVBoxLayout.addWidget(self.buttonx)
j = j + 1
self.setLayout(QVBoxLayout)
# 外部ui设计
class FileCheck(QtWidgets.QDialog):
def __init__(self, parent=None):
check_state = []
super(FileCheck, self).__init__(_get_maya_main_window())
self.setWindowTitle('maya file check')
self.check_state = check_state[:]
main_layout = QtWidgets.QVBoxLayout(self)
self.result_label = QtWidgets.QLabel(u"<div><center><font size=5 color=red>文</font>件<font size=5>检</font>查</center</div")
self.result_label.setFrameStyle(QtWidgets.QFrame.Panel | QtWidgets.QFrame.Sunken)
main_layout.addWidget(self.result_label)
scrollWidget = QtWidgets.QWidget()
scrollWidget.setSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum)
scrollArea = QtWidgets.QScrollArea()
scrollArea.setWidgetResizable(1)
main_layout.addWidget(scrollArea)
myui = CenterWidget()
scrollArea.setWidget(myui)
buttonBox = QtWidgets.QDialogButtonBox(QtWidgets.QDialogButtonBox.Ok |
QtWidgets.QDialogButtonBox.Cancel)
main_layout.addWidget(buttonBox)
buttonBox.accepted.connect(self.check_test)
buttonBox.rejected.connect(self.reject)
self.check_test()
def check_test(self):
pass
def check_state_list(self):
return self.check_state
def main():
global win
if "win" in globals():
try:
win.deleteLater()
except:
pass
win = FileCheck()
win.show()
if __name__ == "__main__":
main()
效果如图。