demoPySideToolBarQWidget.py
3 Demonstrates how to create a QWidget with PySide2 and attach it to the 3dsmax main window.
4 Creates two types of dockable widgets, a QDockWidget and a QToolbar
5 Note: Because this script uses __file__ to locate the image for the toolbar button icon,
6 it must be run using "Scripting > Run Script"
13 from PySide2
import QtCore
14 from PySide2
import QtGui
15 from PySide2
import QtWidgets
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", ctypes.c_void_p(
True)) );
33 obj.ParameterBlock.Radius.Value = 10.0
34 obj.ParameterBlock.Height.Value = 30.0
42 mainWindow = MaxPlus.GetQMaxMainWindow()
45 cylinderIconPath = os.path.dirname(os.path.realpath(__file__)) +
"\\demoPySideToolBarCylinderIcon_48.png"
46 cylinderIcon = QtGui.QIcon(cylinderIconPath)
47 createCylAction = QtWidgets.QAction(cylinderIcon,
u"Create Cylinder", mainWindow)
48 createCylAction.triggered.connect(make_cylinder)
52 dockWidget = QtWidgets.QDockWidget(mainWindow)
54 dockWidget.setObjectName(
"Creators")
55 dockWidget.setWindowTitle(
"Creators")
56 dockToolButton = QtWidgets.QToolButton()
57 dockToolButton.setAutoRaise(
True)
58 dockToolButton.setDefaultAction(createCylAction)
59 dockToolButton.setToolButtonStyle(QtCore.Qt.ToolButtonTextOnly)
60 dockWidget.setWidget(dockToolButton)
62 mainWindow.addDockWidget(QtCore.Qt.LeftDockWidgetArea, dockWidget)
63 dockWidget.setFloating(
True)
68 toolBarWidget = QtWidgets.QToolBar(mainWindow)
70 toolBarWidget.setObjectName(
"Creators TB")
71 toolBarWidget.setWindowTitle(
"Creators TB")
72 toolBarWidget.setFloatable(
True)
73 toolBarWidget.addAction(createCylAction)
75 mainWindow.addToolBar(QtCore.Qt.BottomToolBarArea, toolBarWidget)
78 toolBarPos = getPosToDockToolBar(dockWidget)
79 makeToolBarFloating(toolBarWidget, toolBarPos)
82 if __name__ ==
'__main__':