Ok. 그래서, 나는 이것을 잠시 동안 알아 내려고 노력해 왔고, 나는 막 붙어 있습니다. 매번이 프로그램을 실행하려고하면 창이 즉시 열리고 닫힙니다. 나는 그것을 알아낼 수없는 것 같습니다. 도와주세요.FreeCAD 매크로의 Pyqt 양식이 열려 있지 않습니다.
참고하시기 바랍니다. 이것은 실린더를 만드는 FreeCAD를위한 매크로입니다. 나는 전에 다른 매크로를 만들었고 잘 동작합니다. 내가 PyQt GUI를 소개하기 전에는 문제가 발생하지 않았다.
import FreeCAD, math
from FreeCAD import Base, Draft, Part
from PyQt4 import QtGui, QtCore
class Muffler(QtGui.QWidget):
def __init__(self):
super(Muffler, self).__init__()
self.initUI()
def initUI(self):
#Introduce Labels and inputs
self.t0 = QtGui.QLabel("Cylinder",self)
self.t01 = QtGui.QLabel(" ",self)
self.t1 = QtGui.QLabel("Radius of Cylinder (mm)",self)
self.l1 = QtGui.QLineEdit(self)
self.l1.setText("31.75")
self.t2 = QtGui.QLabel("Length of Cylinder (mm)",self)
self.l2 = QtGui.QLineEdit(self)
self.l2.setText("50")
#Create buttons
self.createButton = QtGui.QPushButton("Create",self)
self.cancelButton = QtGui.QPushButton("Cancel",self)
#Create window and size it
layout = QtGui.QGridLayout()
self.resize(240,180)
self.setWindowTitle("Cylinder")
#Design Layout of window
layout.addWidget(self.t0, 0, 0)
layout.addWidget(self.t01, 0, 1)
layout.addWidget(self.t1, 1, 0)
layout.addWidget(self.l1, 1, 1)
layout.addWidget(self.t2, 2, 0)
layout.addWidget(self.l2, 2, 1)
layout.addWidget(self.createButton, 3, 0)
layout.addWidget(self.cancelButton, 3, 1)
#Set Layout and show it
self.setLayout(layout)
self.show()
#Give functionality to the buttons
QtCore.QObject.connect(self.createButton, QtCore.SIGNAL('clicked()'),self.build)
QtCore.QObject.connect(self.cancelButton, QtCore.SIGNAL('clicked()'),self.close)
def build(self):
#some code
def close(self):
self.hide()
Muffler()
여기서 나머지 코드는 무엇입니까? 위젯을 실제로 인스턴스화하고 표시하는 위치는 어디입니까? 아마도 그 오류가있을 것입니다. – M4rtini
'QtGui.QWidget'은 클래스에 포함되어 있고'init' 정의에서'self'로 식별되기 때문에'self.show'로 호출 할 수 있습니다. 'self.show'를 호출 한 직후'sleep (0)'에 추가하면 윈도우가 나타나지만 버튼이 작동하지 않습니다. –
확인, 간단한 확인. 어디에서나 스크립트에'QtGui.QApplication'을 가지고 있습니까? – M4rtini