我試圖運行一個函數inputAttendance(AthleteInfo),只要在confirmPopup窗口上按下輸入按鈕。此功能包含在另一個我導入的文件中,並且不在任何類中。 一個問題我有是,它似乎運行如何使用QWidget中的信號告訴主窗口執行某個功能?
self.confirmw.confirmAthlete.connect(inputAttendance(AthleteInfo))
前的信號,甚至發出。一旦inputAttendance()完成後,整個窗口關閉後,我得到一個錯誤
參數1有意想不到的類型「NoneType」
我試圖尋找它,它可能會是我根本沒有定義連接類型?
任何幫助將不勝感激,因爲我一直堅持這一點。
編輯:InputAttendance()是一個函數,它更新了我導入的另一個文件中的電子表格,但由於它與我的問題無關,因此未包含在該文章中。我已經測試過這個函數,它的工作原理非常完美,所以我確信它不會導致程序崩潰,而是它被調用的方式。對困惑感到抱歉!
from PyQt5.QtWidgets import (QWidget, QPushButton, QLineEdit,
QInputDialog, QApplication, QLabel)
from PyQt5.QtCore import *
class Ex(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.le = QLineEdit(self)
self.le.move(500, 500)
self.le.returnPressed.connect(self.pushEnter)
self.setGeometry(1000, 1000, 1000, 1000)
self.setWindowTitle('Input dialog')
self.show()
def pushEnter(self):
text = self.le.text()
AthleteInfo = getID(text)
if (AthleteInfo == -1):
print ("Could nto find that ID")
else:
try:
self.confirmw =confirmPopup("Confirm Window")
except Exception in e:
print(e)
time.sleep(10)
self.confirmw.setGeometry(1000, 1000, 1000, 1000)
self.confirmw.show()
try:
self.confirmw.setWindowModality(Qt.ApplicationModal)
except Exception as e:
print(e)
time.sleep(5)
try: self.confirmw.confirmAthlete.connect(inputAttendance(AthleteInfo))
except Exception as e:
print(e)
time.sleep(5)
class confirmPopup(QWidget):
confirmAthlete = pyqtSignal(str)
def __init__(self, name):
super().__init__()
self.name = name
self.initUI()
def initUI(self):
lblName = QLabel(self.name, self, text = "Press enter to confirm")
def keyPressEvent(self, event):
keyPress = event.text()
if event.key() == Qt.Key_Enter or event.key() == Qt.Key_Return:
try:
#print("Emitting Signal")
self.confirmAthlete.emit("Yes")
except Exception as e:
print(e)
time.sleep(5)
if event.key() == Qt.Key_Backspace:
print("Backspace was pressed")
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Ex()
sys.exit(app.exec_())
什麼是inputAttendance? – eyllanesc
沒有答案波紋管工作?它應該完美地工作。 – yurisnm
@ Y.Melo感謝您的回覆!我現在正趕上一些工作/回到學校,所以我明天晚上要看看你的回覆。 – NickBow