PySide QPushButton предотвращает множественный щелчок в 3dsMax - PullRequest
0 голосов
/ 06 октября 2018

У меня есть некоторые проблемы.

Я использовал Qt Designer от Anaconda.Это код.

from PyQt5 import QtCore, QtGui, QtWidgets

class Thread(QtCore.QThread):
    def run(self):
        print("aaaaa")
        QtCore.QThread.sleep(2)
        self.finished.emit()

class Ui_MainWindow(object):
    def btn_event(self):
        self.pushButton.setEnabled(False)
        self.thread.start() #working well

def setupUi(self, MainWindow):
    MainWindow.setObjectName("MainWindow")
    MainWindow.resize(357, 158)
    self.centralwidget = QtWidgets.QWidget(MainWindow)
    self.centralwidget.setObjectName("centralwidget")
    self.pushButton = QtWidgets.QPushButton(self.centralwidget)
    self.pushButton.setGeometry(QtCore.QRect(220, 70, 75, 23))
    self.pushButton.setObjectName("pushButton")
    self.pushButton.clicked.connect(self.btn_event)

    self.thread = Thread()
    self.thread.finished.connect(lambda: self.pushButton.setEnabled(True))

    MainWindow.setCentralWidget(self.centralwidget)
    self.retranslateUi(MainWindow)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)

def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    self.pushButton.setText(_translate("MainWindow", "PushButton"))

if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())

Этот код работает хорошо.как я и хотел.Так что я преобразовал код, работающий в 3dsMAX.

Это код

from PySide import QtCore, QtGui

class Thread(QtCore.QThread):
    def run(self):
        print("aaaaa")
        QtCore.QThread.sleep(2)
        self.finished.emit()

class Ui_MainWindow(object):
    def btn_event(self):
        self.pushButton.setEnabled(False)
        self.thread.start() #programe down in 3dsmax

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(357, 158)
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtGui.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(220, 70, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton.clicked.connect(self.btn_event)
        self.thread = Thread()          
        self.thread.finished.connect(lambda:self.pushButton.setEnabled(True))
        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "PushButton"))
        self.label.setText(_translate("MainWindow", "no button"))

if __name__ == "__main__":
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()

3dsMAX версия, он хорошо работает для просмотра.Но нажал на кнопку, заметка произошла.Так что я вышел из интерфейса и при перезапуске.3dsMAX down ....... Я пытаюсь self.thread.start() -> self.thread.run()

В этом случае.3dsMAX не пух.но можно несколько раз щелкнуть Как исправить этот код.Пожалуйста, мне нужна твоя помощь.

...