Adding buttons to the VR menu¶
You can add your own functions to the VR menu. Tools must be defined for this. A tool can be a simple button that triggers a function or an on/off switch with two functions or a button that opens a new submenu.
vr/customMenuButton.py¶
1# © 2024 Autodesk, Inc. All rights reserved.
2
3from PySide6 import QtCore, QtGui, QtWidgets
4
5icon1Base64 = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAHXSURBVFiF7ZaxaxRBFMa/t/vmvCN3HGclQohamCJoaxVshASblFZqLyKoIBgJucpChCjiHyB2QcFKIohRxErQSkVFk0BUEC7KyWZn9nbmWRhBMLc7ybEguL/2ffO9X7E7DFBS8r9DgxzWd4eO2FidEqN61qhOYNSNxtmVN4ULyCKqSVS95zRPOM0Qo+A0wxmOJQ4vti4tX/ftCrYjkPZ4GsDEJqMaiK6tzewfL0xAnmEEhAuZGWC6MIE0xSiAHZkhwuRSe0+1EAEiNDxidm97WRciIISOR6zr27dlATWOxwCeZ4aIbhYmsMEMgKTP7ON6N7rsW8Q+IZlvNTXsOWf4qNP8PX7Lq0FTT4W15AqAAxsxC8EtF4azw3NLsa9A7kWUPFCHrOH70LzTGYbTCqIZTnNXesGZ2si3pzauNBPNa63TX1Z8F3sJyCtUep/UC6d5TH7ddH8KwBmOkpT27Wp/+LrVxb/J/AZsBycAjPVP0BBbPr/d5bkCBOzOKyBQhuCAAg6o5zYIfhQmAMFCfoW8LkxAHcYjAE/6rgber0fR1cIEAMCG4UkQPfx7Qu/EBceH51a9//nN8HqQiIDiO/VjYtRBF1fqosOXjc7n29RGOsjykpKSf4KfPCOuDqfcAXQAAAAASUVORK5CYII="
6icon2Base64 = "iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAOxAAADsQBlSsOGwAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAAD/SURBVFiF7ZS/SgNBEIe/3Tuw8U+pCAG1tvABFB/CwhcQX8W3ELzGMo9ga5EUgjZ2WmgaIcdxMdHbGYtbQpDz0EhsnA8Gdr/d4jezsGAYxn/HNcmjfXa2OhwQEggAHpF4GGDqJYnSR1+7p1xW1pd9MRwHsn5x0RYgbZLbHQ7PTv25Vg4qj04rmVnXxWcXPJe90eB4d22j9zB5yfpFBuhXAXzrfOZEFYavQjGRxgnP0jiB37K5mpYn3cHeeITQ0v3CAiylTq/uy5vv3F3IE/wEC2ABLEDjP5CXvF3f8qgiEBxaKYigAaQSNCT1vnIQ4p3gYznunt/zv27EMAzDmJsP9/R22LSjgbAAAAAASUVORK5CYII="
7
8def hasClicked():
9 print("click")
10def hasChecked():
11 print("checked")
12def hasUnchecked():
13 print("unchecked")
14def submenuClosed():
15 print("closed")
16
17# Push button function
18tool1 = vrImmersiveUiService.createTool("CustomTool1")
19tool1.setText("Tool 1")
20tool1.setIconData(icon1Base64,"png")
21tool1.signal().clicked.connect(hasClicked)
22
23# Toggle button function, with on, off icon from file
24icon = QtGui.QIcon()
25icon.addFile("customMenuButtonOn.png",QtCore.QSize(),QtGui.QIcon.Mode.Normal,QtGui.QIcon.State.On)
26icon.addFile("customMenuButtonOff.png",QtCore.QSize(),QtGui.QIcon.Mode.Normal,QtGui.QIcon.State.Off)
27tool2 = vrImmersiveUiService.createTool("CustomTool2")
28tool2.setText("Tool 2")
29tool2.setCheckable(True)
30tool2.setIcon(icon)
31tool2.signal().checked.connect(hasChecked)
32tool2.signal().unchecked.connect(hasUnchecked)
33
34# Open sub menu with web content
35tool3 = vrImmersiveUiService.createTool("CustomTool3")
36tool3.setText("Web GUI")
37tool3.setIconData(icon2Base64,"png")
38tool3.setViewContent('http://www.heise.de');
39tool3.signal().viewClosed.connect(submenuClosed)
40
41# Open sub menu with qt widget content
42button = QtWidgets.QPushButton()
43button.setText("Press me")
44button.setFixedWidth(300)
45button.setFixedHeight(200)
46tool4 = vrImmersiveUiService.createTool("CustomTool4")
47tool4.setText("Qt GUI")
48tool4.setIconData(icon2Base64,"png")
49tool4.setViewWidget(button);
50tool4.signal().viewClosed.connect(submenuClosed)