demoPySideToolBarQWidget.py
3 Demonstrates how to create a QWidget with PySide2 and attach it to the 3dsmax main window.
9 from PySide2
import QtCore
10 from PySide2
import QtGui
11 from PySide2
import QtWidgets
13 class _GCProtector(object):
17 def getPosToDockToolBar(dockWidget):
18 spaceBetweenWidgets = 20
19 dockWidgetRect = dockWidget.geometry()
20 xPos = dockWidgetRect.x()
21 yPos = dockWidgetRect.bottom() + spaceBetweenWidgets
22 return QtCore.QPoint(xPos, yPos)
24 def makeToolBarFloating(toolBar, pos):
25 toolBar.setWindowFlags(QtCore.Qt.Tool | QtCore.Qt.FramelessWindowHint | QtCore.Qt.X11BypassWindowManagerHint)
29 QtCore.QMetaObject.invokeMethod( toolBar,
"topLevelChanged", QtCore.Qt.DirectConnection, QtCore.QGenericArgument(
"bool",
True) );
33 obj.ParameterBlock.Radius.Value = 10.0
34 obj.ParameterBlock.Height.Value = 30.0
42 mainWindow = MaxPlus.GetQMaxMainWindow()
46 cylinderIconPath = os.path.dirname(os.path.realpath(__file__)) +
"\\demoPySideToolBarCylinderIcon_48.png"
47 cylinderIcon = QtGui.QIcon(cylinderIconPath)
48 createCylAction = QtWidgets.QAction(cylinderIcon,
u"Create Cylinder", mainWindow)
49 createCylAction.triggered.connect(make_cylinder)
53 dockWidget = QtWidgets.QDockWidget(mainWindow)
54 _GCProtector.widgets.append(dockWidget)
56 dockWidget.setObjectName(
"Creators")
57 dockWidget.setWindowTitle(
"Creators")
58 dockToolButton = QtWidgets.QToolButton()
59 dockToolButton.setAutoRaise(
True)
60 dockToolButton.setDefaultAction(createCylAction)
61 dockToolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextOnly)
62 dockWidget.setWidget(dockToolButton)
64 mainWindow.addDockWidget(QtCore.Qt.LeftDockWidgetArea, dockWidget)
65 dockWidget.setFloating(
True)
70 toolBarWidget = QtWidgets.QToolBar(mainWindow)
71 _GCProtector.widgets.append(dockWidget)
73 toolBarWidget.setObjectName(
"Creators TB")
74 toolBarWidget.setWindowTitle(
"Creators TB")
75 toolBarWidget.setFloatable(
True)
76 toolBarWidget.addAction(createCylAction)
78 mainWindow.addToolBar(QtCore.Qt.BottomToolBarArea, toolBarWidget)
81 toolBarPos = getPosToDockToolBar(dockWidget)
82 makeToolBarFloating(toolBarWidget, toolBarPos)
87 app = QtWidgets.QApplication([])
89 if __name__ ==
'__main__':