class MainWindow(QtWidgets.QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.ui = Ui_main_window() self.ui.setupUi(self) self.glGeometry = self.ui.opengl_widget.geometry() self.glObjectName = self.ui.opengl_widget.objectName() self.glWidget = GLWidget(self.ui.centralwidget) self.glWidget.setGeometry(self.glGeometry) self.glWidget.setObjectName(self.glObjectName) self.ui.box_button.clicked.connect( lambda: self.glWidget.setObject('box')) self.ui.sphere_button.clicked.connect( lambda: self.glWidget.setObject('sphere', r=1, step=100)) self.ui.pyramid_button.clicked.connect( lambda: self.glWidget.setObject('pyramid')) self.ui.thor_button.clicked.connect( lambda: self.glWidget.setObject('thor', ir=0.5, step=100)) self.ui.cylinder_button.clicked.connect( lambda: self.glWidget.setObject('cylinder', r=1, h=0.5, step=100)) self.ui.csg_button.clicked.connect( lambda: self.glWidget.setObject('csg', operation='a_or_b')) self.ui.reset_button.clicked.connect(self.glWidget.resetPosition) self.ui.mouse_wheel_check_box.clicked.connect( lambda: self.glWidget.setMouseWheelInvertion( self.ui.mouse_wheel_check_box.isChecked())) self.ui.mouse_wheel_slider.sliderReleased.connect( lambda: self.glWidget.setMouseWheelSensitivity(10 - ( self.ui.mouse_wheel_slider.value()) // 10)) self.ui.rotation_slider.sliderReleased.connect( lambda: self.glWidget.setRotationSensitivity(10 - ( self.ui.rotation_slider.value()) // 10)) self.ui.lighting_checkbox.clicked.connect( lambda: self.glWidget.setGLlighting(self.ui.lighting_checkbox. isChecked()))
class Ui_MainWindow(object): def setupUi(self, glFormat, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(1200, 900) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) MainWindow.setMinimumSize(QtCore.QSize(0, 0)) MainWindow.setMaximumSize(QtCore.QSize(1920, 1080)) self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setMinimumSize(QtCore.QSize(400, 300)) self.centralwidget.setMaximumSize(QtCore.QSize(1920, 1080)) self.centralwidget.setObjectName("centralwidget") self.gridLayout_3 = QtWidgets.QGridLayout(self.centralwidget) self.gridLayout_3.setSizeConstraint(QtWidgets.QLayout.SetMinAndMaxSize) self.gridLayout_3.setObjectName("gridLayout_3") self.openGLWidget = GLWidget(glFormat, Robot, self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Expanding) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.openGLWidget.sizePolicy().hasHeightForWidth()) self.openGLWidget.setSizePolicy(sizePolicy) self.openGLWidget.setMinimumSize(QtCore.QSize(400, 300)) self.openGLWidget.setMaximumSize(QtCore.QSize(1920, 1080)) self.openGLWidget.setMouseTracking(True) self.openGLWidget.setObjectName("openGLWidget") self.gridLayout_3.addWidget(self.openGLWidget, 0, 0, 1, 1) self.horizontalLayout = QtWidgets.QHBoxLayout() self.horizontalLayout.setSizeConstraint( QtWidgets.QLayout.SetDefaultConstraint) self.horizontalLayout.setObjectName("horizontalLayout") self.gridLayout_2 = QtWidgets.QGridLayout() self.gridLayout_2.setSizeConstraint(QtWidgets.QLayout.SetNoConstraint) self.gridLayout_2.setObjectName("gridLayout_2") self.append_button = QtWidgets.QPushButton(self.centralwidget) self.append_button.setMaximumSize(QtCore.QSize(80, 40)) self.append_button.setFlat(False) self.append_button.setObjectName("append_button") self.gridLayout_2.addWidget(self.append_button, 0, 0, 1, 1) self.remove_button = QtWidgets.QPushButton(self.centralwidget) self.remove_button.setMaximumSize(QtCore.QSize(80, 40)) self.remove_button.setObjectName("remove_button") self.gridLayout_2.addWidget(self.remove_button, 1, 1, 1, 1) self.menu_label = QtWidgets.QLabel(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Ignored, QtWidgets.QSizePolicy.Ignored) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.menu_label.sizePolicy().hasHeightForWidth()) self.menu_label.setSizePolicy(sizePolicy) self.menu_label.setObjectName("menu_label") self.gridLayout_2.addWidget(self.menu_label, 2, 0, 1, 1) self.joint_menu = QtWidgets.QComboBox(self.centralwidget) self.joint_menu.setMaximumSize(QtCore.QSize(40, 40)) self.joint_menu.setEditable(False) self.joint_menu.setObjectName("joint_menu") self.joint_menu.addItem("") self.gridLayout_2.addWidget(self.joint_menu, 2, 1, 1, 1) self.insert_button = QtWidgets.QPushButton(self.centralwidget) self.insert_button.setMaximumSize(QtCore.QSize(80, 40)) self.insert_button.setObjectName("insert_button") self.gridLayout_2.addWidget(self.insert_button, 1, 0, 1, 1) self.pop_button = QtWidgets.QPushButton(self.centralwidget) self.pop_button.setMaximumSize(QtCore.QSize(80, 40)) self.pop_button.setObjectName("pop_button") self.gridLayout_2.addWidget(self.pop_button, 0, 1, 1, 1) self.horizontalLayout.addLayout(self.gridLayout_2) self.gridLayout = QtWidgets.QGridLayout() self.gridLayout.setSizeConstraint(QtWidgets.QLayout.SetNoConstraint) self.gridLayout.setObjectName("gridLayout") self.d_label = QtWidgets.QLabel(self.centralwidget) self.d_label.setMaximumSize(QtCore.QSize(40, 20)) self.d_label.setObjectName("d_label") self.gridLayout.addWidget(self.d_label, 0, 2, 1, 1) self.a_input = QtWidgets.QLineEdit(self.centralwidget) self.a_input.setMaximumSize(QtCore.QSize(40, 20)) self.a_input.setObjectName("a_input") self.gridLayout.addWidget(self.a_input, 1, 1, 1, 1) self.theta_label = QtWidgets.QLabel(self.centralwidget) self.theta_label.setMaximumSize(QtCore.QSize(40, 20)) self.theta_label.setObjectName("theta_label") self.gridLayout.addWidget(self.theta_label, 0, 3, 1, 1) self.d_input = QtWidgets.QLineEdit(self.centralwidget) self.d_input.setMaximumSize(QtCore.QSize(40, 20)) self.d_input.setObjectName("d_input") self.gridLayout.addWidget(self.d_input, 1, 2, 1, 1) self.theta_input = QtWidgets.QLineEdit(self.centralwidget) self.theta_input.setMaximumSize(QtCore.QSize(40, 20)) self.theta_input.setObjectName("theta_input") self.gridLayout.addWidget(self.theta_input, 1, 3, 1, 1) self.theta_var = QtWidgets.QCheckBox(self.centralwidget) self.theta_var.setMaximumSize(QtCore.QSize(40, 20)) self.theta_var.setObjectName("theta_var") self.gridLayout.addWidget(self.theta_var, 2, 3, 1, 1) self.a_label = QtWidgets.QLabel(self.centralwidget) self.a_label.setEnabled(True) self.a_label.setMaximumSize(QtCore.QSize(40, 20)) self.a_label.setObjectName("a_label") self.gridLayout.addWidget(self.a_label, 0, 1, 1, 1) self.d_var = QtWidgets.QCheckBox(self.centralwidget) self.d_var.setObjectName("d_var") self.gridLayout.addWidget(self.d_var, 2, 2, 1, 1) self.alpha_input = QtWidgets.QLineEdit(self.centralwidget) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.alpha_input.sizePolicy().hasHeightForWidth()) self.alpha_input.setSizePolicy(sizePolicy) self.alpha_input.setMaximumSize(QtCore.QSize(40, 20)) self.alpha_input.setObjectName("alpha_input") self.gridLayout.addWidget(self.alpha_input, 1, 0, 1, 1) self.alpha_label = QtWidgets.QLabel(self.centralwidget) self.alpha_label.setMaximumSize(QtCore.QSize(40, 20)) self.alpha_label.setObjectName("alpha_label") self.gridLayout.addWidget(self.alpha_label, 0, 0, 1, 1) self.horizontalLayout.addLayout(self.gridLayout) self.gridLayout_3.addLayout(self.horizontalLayout, 1, 0, 1, 1) MainWindow.setCentralWidget(self.centralwidget) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.menu_label.setBuddy(self.joint_menu) self.d_label.setBuddy(self.d_input) self.theta_label.setBuddy(self.theta_input) self.a_label.setBuddy(self.a_input) self.alpha_label.setBuddy(self.alpha_input) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) MainWindow.setTabOrder(self.append_button, self.pop_button) MainWindow.setTabOrder(self.pop_button, self.insert_button) MainWindow.setTabOrder(self.insert_button, self.remove_button) MainWindow.setTabOrder(self.remove_button, self.joint_menu) MainWindow.setTabOrder(self.joint_menu, self.alpha_input) MainWindow.setTabOrder(self.alpha_input, self.a_input) MainWindow.setTabOrder(self.a_input, self.d_input) MainWindow.setTabOrder(self.d_input, self.d_var) MainWindow.setTabOrder(self.d_var, self.theta_input) MainWindow.setTabOrder(self.theta_input, self.theta_var) self.connect_all() def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "DH Modeler")) self.append_button.setText(_translate("MainWindow", "Append Joint")) self.remove_button.setText(_translate("MainWindow", "Remove Joint")) self.menu_label.setText( _translate( "MainWindow", "<html><head/><body><p align=\"right\">Current Joint</p></body></html>" )) self.joint_menu.setItemText(0, _translate("MainWindow", "1")) self.insert_button.setText(_translate("MainWindow", "Insert Joint")) self.pop_button.setText(_translate("MainWindow", "Pop Joint")) self.d_label.setText( _translate( "MainWindow", "<html><head/><body><p align=\"center\">d</p></body></html>")) self.a_input.setText(_translate("MainWindow", "0.0")) self.theta_label.setText( _translate( "MainWindow", "<html><head/><body><p align=\"center\">θ</p></body></html>" )) self.d_input.setText(_translate("MainWindow", "0.0\n")) self.theta_input.setText(_translate("MainWindow", "0.0\n")) self.theta_var.setText(_translate("MainWindow", "var")) self.a_label.setText( _translate( "MainWindow", "<html><head/><body><p align=\"center\">a</p></body></html>")) self.d_var.setText(_translate("MainWindow", "var")) self.alpha_input.setText(_translate("MainWindow", "0.0")) self.alpha_label.setText( _translate( "MainWindow", "<html><head/><body><p align=\"center\">α</p></body></html>")) # Following methods are not generated by QT def connect_all(self): self.append_button.clicked.connect(self.append_joint) self.insert_button.clicked.connect(self.insert_joint) self.pop_button.clicked.connect(self.pop_joint) self.remove_button.clicked.connect(self.remove_joint) self.joint_menu.currentIndexChanged.connect(self.switch_joint) self.alpha_input.editingFinished.connect(self.change_alpha) self.a_input.editingFinished.connect(self.change_a) self.d_input.editingFinished.connect(self.change_d) self.theta_input.editingFinished.connect(self.change_theta) self.d_var.clicked.connect(self.change_d_var) self.theta_var.clicked.connect(self.change_theta_var) def append_joint(self): if Robot.append_joint(): self.joint_menu.addItem(str(Robot.len - 1)) self.joint_menu.setCurrentIndex(Robot.len - 2) def insert_joint(self): if Robot.insert_joint(self.joint_menu.currentIndex()): self.joint_menu.addItem(str(Robot.len - 1)) self.joint_menu.setCurrentIndex(self.joint_menu.currentIndex() + 1) def pop_joint(self): if Robot.pop_joint(): self.joint_menu.removeItem(self.joint_menu.count() - 1) def remove_joint(self): if Robot.remove_joint(self.joint_menu.currentIndex()): self.joint_menu.removeItem(self.joint_menu.count() - 1) self.switch_joint() def switch_joint(self): i = self.joint_menu.currentIndex() self.alpha_input.setText(str(Robot.return_joint(i).alpha)) self.a_input.setText(str(Robot.return_joint(i).a)) self.d_input.setText(str(Robot.return_joint(i).d)) self.theta_input.setText(str(Robot.return_joint(i).theta)) self.d_var.setChecked(Robot.return_joint(i).d_var) self.theta_var.setChecked(Robot.return_joint(i).theta_var) def change_alpha(self): joint_num = self.joint_menu.currentIndex() joint = Robot.return_joint(joint_num) text = self.alpha_input.text() joint.alpha = float(text if text != "" else 0) Robot.update_joint(joint_num) self.openGLWidget.update() def change_a(self): joint_num = self.joint_menu.currentIndex() joint = Robot.return_joint(joint_num) text = self.a_input.text() joint.a = float(text if text != "" else 0) Robot.update_joint(joint_num) self.openGLWidget.update() def change_d(self): joint_num = self.joint_menu.currentIndex() joint = Robot.return_joint(joint_num) text = self.d_input.text() joint.d = float(text if text != "" else 0) Robot.update_joint(joint_num) self.openGLWidget.update() def change_theta(self): joint_num = self.joint_menu.currentIndex() joint = Robot.return_joint(joint_num) text = self.theta_input.text() joint.theta = float(text if text != "" else 0) Robot.update_joint(joint_num) self.openGLWidget.update() def change_d_var(self): d_on = self.d_var.isChecked() Robot.return_joint(self.joint_menu.currentIndex()).d_var = d_on if d_on: self.theta_var.setChecked(False) self.openGLWidget.update() def change_theta_var(self): theta_on = self.theta_var.isChecked() Robot.return_joint(self.joint_menu.currentIndex()).theta_var = theta_on if theta_on: self.d_var.setChecked(False) self.openGLWidget.update()
class Ui_MainWindow(object): def setupUi(self, MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.setWindowModality(QtCore.Qt.WindowModal) MainWindow.setFixedSize(1000, 600) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( MainWindow.sizePolicy().hasHeightForWidth()) MainWindow.setSizePolicy(sizePolicy) self.centralWidget = QtWidgets.QWidget(MainWindow) self.centralWidget.setObjectName("centralWidget") self.layoutWidget = QtWidgets.QWidget(self.centralWidget) self.layoutWidget.setGeometry(QtCore.QRect(0, 0, 1001, 411)) self.layoutWidget.setObjectName("layoutWidget") self.gridLayout = QtWidgets.QGridLayout(self.layoutWidget) self.gridLayout.setContentsMargins(11, 11, 11, 11) self.gridLayout.setSpacing(6) self.gridLayout.setObjectName("gridLayout") spacerItem = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout.addItem(spacerItem, 0, 0, 1, 1) self.gridLayout_2 = QtWidgets.QGridLayout() self.gridLayout_2.setSpacing(6) self.gridLayout_2.setObjectName("gridLayout_2") self.sceneOpenGLWidget = GLWidget( self.layoutWidget, self.layoutWidget.frameGeometry().width(), self.layoutWidget.frameGeometry().height()) self.sceneOpenGLWidget.setEnabled(True) self.sceneOpenGLWidget.setObjectName("sceneOpenGLWidget") self.gridLayout_2.addWidget(self.sceneOpenGLWidget, 0, 1, 1, 1) spacerItem1 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.gridLayout_2.addItem(spacerItem1, 0, 0, 1, 1) spacerItem2 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.gridLayout_2.addItem(spacerItem2, 0, 2, 1, 1) self.gridLayout.addLayout(self.gridLayout_2, 1, 0, 1, 1) spacerItem3 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout.addItem(spacerItem3, 2, 0, 1, 1) self.layoutWidget1 = QtWidgets.QWidget(self.centralWidget) self.layoutWidget1.setGeometry(QtCore.QRect(0, 410, 1001, 161)) self.layoutWidget1.setObjectName("layoutWidget1") self.gridLayout_3 = QtWidgets.QGridLayout(self.layoutWidget1) self.gridLayout_3.setContentsMargins(11, 11, 11, 11) self.gridLayout_3.setSpacing(6) self.gridLayout_3.setObjectName("gridLayout_3") spacerItem4 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.gridLayout_3.addItem(spacerItem4, 0, 0, 1, 1) self.gridLayout_4 = QtWidgets.QGridLayout() self.gridLayout_4.setSpacing(6) self.gridLayout_4.setObjectName("gridLayout_4") spacerItem5 = QtWidgets.QSpacerItem(20, 35, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout_4.addItem(spacerItem5, 0, 0, 1, 1) self.graphObjectComboBox = QtWidgets.QComboBox(self.layoutWidget1) self.graphObjectComboBox.setObjectName("graphObjectComboBox") self.gridLayout_4.addWidget(self.graphObjectComboBox, 1, 0, 1, 1) self.graphObjectLabel = QtWidgets.QLabel(self.layoutWidget1) self.graphObjectLabel.setObjectName("graphObjectLabel") self.gridLayout_4.addWidget(self.graphObjectLabel, 2, 0, 1, 1) spacerItem6 = QtWidgets.QSpacerItem(20, 35, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout_4.addItem(spacerItem6, 3, 0, 1, 1) self.gridLayout_3.addLayout(self.gridLayout_4, 0, 1, 1, 1) self.line_3 = QtWidgets.QFrame(self.layoutWidget1) self.line_3.setFrameShape(QtWidgets.QFrame.VLine) self.line_3.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_3.setObjectName("line_3") self.gridLayout_3.addWidget(self.line_3, 0, 2, 1, 1) self.gridLayout_5 = QtWidgets.QGridLayout() self.gridLayout_5.setSpacing(6) self.gridLayout_5.setObjectName("gridLayout_5") self.objectXDial = QtWidgets.QDial(self.layoutWidget1) self.objectXDial.setObjectName("objectXDial") self.gridLayout_5.addWidget(self.objectXDial, 0, 0, 1, 1) self.objectXLabel = QtWidgets.QLabel(self.layoutWidget1) self.objectXLabel.setObjectName("objectXLabel") self.gridLayout_5.addWidget(self.objectXLabel, 1, 0, 1, 1) self.gridLayout_3.addLayout(self.gridLayout_5, 0, 3, 1, 1) self.gridLayout_6 = QtWidgets.QGridLayout() self.gridLayout_6.setSpacing(6) self.gridLayout_6.setObjectName("gridLayout_6") self.objectYDial = QtWidgets.QDial(self.layoutWidget1) self.objectYDial.setObjectName("objectYDial") self.gridLayout_6.addWidget(self.objectYDial, 0, 0, 1, 1) self.objectYLabel = QtWidgets.QLabel(self.layoutWidget1) self.objectYLabel.setObjectName("objectYLabel") self.gridLayout_6.addWidget(self.objectYLabel, 1, 0, 1, 1) self.gridLayout_3.addLayout(self.gridLayout_6, 0, 4, 1, 1) self.gridLayout_7 = QtWidgets.QGridLayout() self.gridLayout_7.setSpacing(6) self.gridLayout_7.setObjectName("gridLayout_7") self.objectZDial = QtWidgets.QDial(self.layoutWidget1) self.objectZDial.setObjectName("objectZDial") self.gridLayout_7.addWidget(self.objectZDial, 0, 0, 1, 1) self.objectZLabel = QtWidgets.QLabel(self.layoutWidget1) self.objectZLabel.setObjectName("objectZLabel") self.gridLayout_7.addWidget(self.objectZLabel, 1, 0, 1, 1) self.gridLayout_3.addLayout(self.gridLayout_7, 0, 5, 1, 1) self.line = QtWidgets.QFrame(self.layoutWidget1) self.line.setFrameShape(QtWidgets.QFrame.VLine) self.line.setFrameShadow(QtWidgets.QFrame.Sunken) self.line.setObjectName("line") self.gridLayout_3.addWidget(self.line, 0, 6, 1, 1) self.gridLayout_8 = QtWidgets.QGridLayout() self.gridLayout_8.setSpacing(6) self.gridLayout_8.setObjectName("gridLayout_8") spacerItem7 = QtWidgets.QSpacerItem(20, 35, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout_8.addItem(spacerItem7, 0, 0, 1, 1) self.hidePushButton = QtWidgets.QPushButton(self.layoutWidget1) self.hidePushButton.setObjectName("hidePushButton") self.gridLayout_8.addWidget(self.hidePushButton, 1, 0, 1, 1) self.modifyPushButton = QtWidgets.QPushButton(self.layoutWidget1) self.modifyPushButton.setObjectName("modifyPushButton") self.gridLayout_8.addWidget(self.modifyPushButton, 2, 0, 1, 1) spacerItem8 = QtWidgets.QSpacerItem(20, 35, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout_8.addItem(spacerItem8, 3, 0, 1, 1) self.gridLayout_3.addLayout(self.gridLayout_8, 0, 7, 1, 1) self.line_2 = QtWidgets.QFrame(self.layoutWidget1) self.line_2.setFrameShape(QtWidgets.QFrame.VLine) self.line_2.setFrameShadow(QtWidgets.QFrame.Sunken) self.line_2.setObjectName("line_2") self.gridLayout_3.addWidget(self.line_2, 0, 9, 1, 1) self.gridLayout_11 = QtWidgets.QGridLayout() self.gridLayout_11.setSpacing(6) self.gridLayout_11.setObjectName("gridLayout_11") self.gridLayout_12 = QtWidgets.QGridLayout() self.gridLayout_12.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) self.gridLayout_12.setSpacing(6) self.gridLayout_12.setObjectName("gridLayout_12") spacerItem9 = QtWidgets.QSpacerItem(15, 35, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout_12.addItem(spacerItem9, 2, 0, 1, 1) self.zoomVerticalSlider = QtWidgets.QSlider(self.layoutWidget1) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.zoomVerticalSlider.sizePolicy().hasHeightForWidth()) self.zoomVerticalSlider.setSizePolicy(sizePolicy) self.zoomVerticalSlider.setOrientation(QtCore.Qt.Vertical) self.zoomVerticalSlider.setObjectName("zoomVerticalSlider") self.gridLayout_12.addWidget(self.zoomVerticalSlider, 1, 0, 1, 1) spacerItem10 = QtWidgets.QSpacerItem(15, 5, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout_12.addItem(spacerItem10, 0, 0, 1, 1) spacerItem11 = QtWidgets.QSpacerItem(20, 20, QtWidgets.QSizePolicy.Fixed, QtWidgets.QSizePolicy.Minimum) self.gridLayout_12.addItem(spacerItem11, 1, 1, 1, 1) self.gridLayout_11.addLayout(self.gridLayout_12, 0, 1, 1, 1) self.gridLayout_9 = QtWidgets.QGridLayout() self.gridLayout_9.setSpacing(6) self.gridLayout_9.setObjectName("gridLayout_9") self.povFieldLabel = QtWidgets.QLabel(self.layoutWidget1) self.povFieldLabel.setObjectName("povFieldLabel") self.gridLayout_9.addWidget(self.povFieldLabel, 6, 0, 1, 1) spacerItem12 = QtWidgets.QSpacerItem(20, 5, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout_9.addItem(spacerItem12, 0, 0, 1, 1) self.zoomLcdNumber = QtWidgets.QLCDNumber(self.layoutWidget1) self.zoomLcdNumber.setObjectName("zoomLcdNumber") self.gridLayout_9.addWidget(self.zoomLcdNumber, 1, 0, 1, 1) self.zoomLabel = QtWidgets.QLabel(self.layoutWidget1) self.zoomLabel.setObjectName("zoomLabel") self.gridLayout_9.addWidget(self.zoomLabel, 3, 0, 1, 1) spacerItem13 = QtWidgets.QSpacerItem(20, 5, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout_9.addItem(spacerItem13, 8, 0, 1, 1) self.povFieldLcdNumber = QtWidgets.QLCDNumber(self.layoutWidget1) self.povFieldLcdNumber.setObjectName("povFieldLcdNumber") self.gridLayout_9.addWidget(self.povFieldLcdNumber, 5, 0, 1, 1) self.povFieldHorizontalSlider = QtWidgets.QSlider(self.layoutWidget1) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) sizePolicy.setHeightForWidth( self.povFieldHorizontalSlider.sizePolicy().hasHeightForWidth()) self.povFieldHorizontalSlider.setSizePolicy(sizePolicy) self.povFieldHorizontalSlider.setOrientation(QtCore.Qt.Horizontal) self.povFieldHorizontalSlider.setObjectName("povFieldHorizontalSlider") self.gridLayout_9.addWidget(self.povFieldHorizontalSlider, 7, 0, 1, 1) spacerItem14 = QtWidgets.QSpacerItem(20, 5, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Fixed) self.gridLayout_9.addItem(spacerItem14, 4, 0, 1, 1) self.gridLayout_10 = QtWidgets.QGridLayout() self.gridLayout_10.setSpacing(6) self.gridLayout_10.setObjectName("gridLayout_10") self.gridLayout_9.addLayout(self.gridLayout_10, 9, 0, 1, 1) self.gridLayout_11.addLayout(self.gridLayout_9, 0, 0, 1, 1) self.gridLayout_3.addLayout(self.gridLayout_11, 0, 10, 1, 1) MainWindow.setCentralWidget(self.centralWidget) self.menuBar = QtWidgets.QMenuBar(MainWindow) self.menuBar.setGeometry(QtCore.QRect(0, 0, 1000, 25)) self.menuBar.setObjectName("menuBar") self.menuFile = QtWidgets.QMenu(self.menuBar) self.menuFile.setObjectName("menuFile") self.menuLoad = QtWidgets.QMenu(self.menuFile) self.menuLoad.setObjectName("menuLoad") self.menuSave = QtWidgets.QMenu(self.menuFile) self.menuSave.setObjectName("menuSave") self.menuEdit = QtWidgets.QMenu(self.menuBar) self.menuEdit.setObjectName("menuEdit") self.menuTools = QtWidgets.QMenu(self.menuBar) self.menuTools.setObjectName("menuTools") self.menuHelp = QtWidgets.QMenu(self.menuBar) self.menuHelp.setObjectName("menuHelp") MainWindow.setMenuBar(self.menuBar) self.actionExit = QtWidgets.QAction(MainWindow) self.actionExit.setWhatsThis("") self.actionExit.setObjectName("actionExit") self.actionExit.setShortcut('Ctrl+Q') self.actionExit.triggered.connect(self.closeMainWindow) self.actionObject = QtWidgets.QAction(MainWindow) self.actionObject.setObjectName("actionObject") self.actionObject.setShortcut('Ctrl+O') self.actionObject.triggered.connect(self.openFileNamesDialog) self.actionModel = QtWidgets.QAction(MainWindow) self.actionModel.setObjectName("actionModel") self.actionObject_2 = QtWidgets.QAction(MainWindow) self.actionObject_2.setObjectName("actionObject_2") self.actionObject_2.setShortcut('Ctrl+S') self.actionObject_2.triggered.connect(self.saveFileDialog) self.actionModel_2 = QtWidgets.QAction(MainWindow) self.actionModel_2.setObjectName("actionModel_2") self.actionPredefined_Forms = QtWidgets.QAction(MainWindow) self.actionPredefined_Forms.setObjectName("actionPredefined_Forms") self.actionPredefined_Scenes = QtWidgets.QAction(MainWindow) self.actionPredefined_Scenes.setObjectName("actionPredefined_Scenes") self.actionObject_3 = QtWidgets.QAction(MainWindow) self.actionObject_3.setObjectName("actionObject_3") self.actionModel_3 = QtWidgets.QAction(MainWindow) self.actionModel_3.setObjectName("actionModel_3") self.actionScene_POV = QtWidgets.QAction(MainWindow) self.actionScene_POV.setObjectName("actionScene_POV") self.actionAbout = QtWidgets.QAction(MainWindow) self.actionAbout.setObjectName("actionAbout") self.menuLoad.addAction(self.actionObject) self.menuLoad.addAction(self.actionModel) self.menuSave.addAction(self.actionObject_2) self.menuSave.addAction(self.actionModel_2) self.menuFile.addAction(self.menuLoad.menuAction()) self.menuFile.addAction(self.menuSave.menuAction()) self.menuFile.addAction(self.actionExit) self.menuEdit.addAction(self.actionObject_3) self.menuEdit.addAction(self.actionModel_3) self.menuTools.addAction(self.actionPredefined_Forms) self.menuTools.addAction(self.actionPredefined_Scenes) self.menuHelp.addAction(self.actionAbout) self.menuBar.addAction(self.menuFile.menuAction()) self.menuBar.addAction(self.menuEdit.menuAction()) self.menuBar.addAction(self.menuTools.menuAction()) self.menuBar.addAction(self.menuHelp.menuAction()) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self, MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow", "G2-F")) self.graphObjectLabel.setText( _translate("MainWindow", "Object on Scene")) self.objectXLabel.setText(_translate("MainWindow", "Rotate X")) self.objectYLabel.setText(_translate("MainWindow", "Rotate Y")) self.objectZLabel.setText(_translate("MainWindow", "Rotate Z")) self.hidePushButton.setText(_translate("MainWindow", "Hide")) self.modifyPushButton.setText(_translate("MainWindow", "Modify")) self.povFieldLabel.setText(_translate("MainWindow", "POV Field")) self.zoomLabel.setText(_translate("MainWindow", "Zoom Ratio")) self.menuFile.setTitle(_translate("MainWindow", "File")) self.menuLoad.setTitle(_translate("MainWindow", "Load")) self.menuSave.setTitle(_translate("MainWindow", "Save")) self.menuEdit.setTitle(_translate("MainWindow", "Edit")) self.menuTools.setTitle(_translate("MainWindow", "Tools")) self.menuHelp.setTitle(_translate("MainWindow", "Help")) self.actionExit.setText(_translate("MainWindow", "Exit")) self.actionObject.setText(_translate("MainWindow", "Object")) self.actionModel.setText(_translate("MainWindow", "Model")) self.actionObject_2.setText(_translate("MainWindow", "Object")) self.actionModel_2.setText(_translate("MainWindow", "Model")) self.actionPredefined_Forms.setText( _translate("MainWindow", "Predefined Objects")) self.actionPredefined_Scenes.setText( _translate("MainWindow", "Predefined Scenes")) self.actionObject_3.setText(_translate("MainWindow", "Object")) self.actionModel_3.setText(_translate("MainWindow", "Model")) self.actionScene_POV.setText(_translate("MainWindow", "Scene POV")) self.actionAbout.setText(_translate("MainWindow", "About")) def closeMainWindow(self): exit() def openFileNamesDialog(self): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog files, _ = QFileDialog.getOpenFileNames( None, "Abrir", "", "All Files (*);;Python Files (*.py)", options=options) if files: print(files) def saveFileDialog(self): options = QFileDialog.Options() options |= QFileDialog.DontUseNativeDialog fileName, _ = QFileDialog.getSaveFileName( None, "Guardar", "", "All Files (*);;Text Files (*.txt)", options=options) if fileName: print(fileName)