I'm using FreeCAD 0.20 on Windows 11.
I have created a Qt UI which contains some pushbuttons and converted it into Python via pyside-uic.
The python code can be successfully executed in PyCharm, but it is failed in FreeCAD with Macro.
I appreciate that someone could have a look and sort it out.
Many thanks.
Mea08kw
The error message is
My Python code is:
09:42:10 Traceback (most recent call last):
File "C:/Users/kit19/AppData/Roaming/FreeCAD/Macro/Test.FCMacro", line 71, in <module>
ui.setupUi(MainWindow)
File "C:/Users/kit19/AppData/Roaming/FreeCAD/Macro/Test.FCMacro", line 41, in setupUi
self.pushButton.clicked.connect(Dialog.slot1)
<class 'AttributeError'>: 'PySide2.QtWidgets.QMainWindow' object has no attribute 'slot1'
Code: Select all
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
import sys
from PySide2 import QtCore, QtGui, QtWidgets
class Ui_Dialog(object):
def setupUi(self, Dialog):
if not Dialog.objectName():
Dialog.setObjectName(u"Dialog")
Dialog.resize(896, 654)
self.verticalLayout = QVBoxLayout(Dialog)
self.verticalLayout.setObjectName(u"verticalLayout")
self.pushButton = QPushButton(Dialog)
self.pushButton.setObjectName(u"pushButton")
self.pushButton.setGeometry(QtCore.QRect(400, 50, 175, 175))
self.pushButton.setStyleSheet("QPushButton{border-image:url(casual.png)}"
"QPushButton:hover{border-image: url(click.png)}"
"QPushButton:pressed{border-image: url(casual.png)}")
self.pushButton_3 = QPushButton(Dialog)
self.pushButton_3.setObjectName(u"pushButton_3")
self.pushButton_3.setGeometry(QtCore.QRect(400, 250, 175, 175))
self.pushButton_3.setStyleSheet("QPushButton{border-image:url(formal.png)}"
"QPushButton:hover{border-image: url(click.png)}"
"QPushButton:pressed{border-image: url(formal.png)}")
self.pushButton_2 = QPushButton(Dialog)
self.pushButton_2.setObjectName(u"pushButton_2")
self.pushButton_2.setGeometry(QtCore.QRect(400, 450, 175, 175))
self.pushButton_2.setStyleSheet("QPushButton{border-image:url(sport.png)}"
"QPushButton:hover{border-image: url(click.png)}"
"QPushButton:pressed{border-image: url(sport.png)}")
self.retranslateUi(Dialog)
self.pushButton.clicked.connect(Dialog.slot1)
self.pushButton_2.clicked.connect(Dialog.slot2)
self.pushButton_3.clicked.connect(Dialog.slot4)
QMetaObject.connectSlotsByName(Dialog)
# setupUi
def retranslateUi(self, Dialog):
Dialog.setWindowTitle(QCoreApplication.translate("Dialog", u"Model Selection", None))
self.pushButton.setText(QCoreApplication.translate("Dialog", u"Casual", None))
self.pushButton_3.setText(QCoreApplication.translate("Dialog", u"Formal", None))
self.pushButton_2.setText(QCoreApplication.translate("Dialog", u"Sport", None))
# retranslateUi
class MainWindow(object):
def __init__(self):
super(MainWindow, self).__init__()
self.setupUi(self)
def slot1(self):
print("Hello world1")
def slot2(self):
print("Hello world3")
def slot4(self):
print("Hello world2")
MainWindow = QtWidgets.QMainWindow()
ui = Ui_Dialog()
ui.setupUi(MainWindow)
MainWindow.show()