Я пытаюсь запустить функцию 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_())
что такое ввод? – eyllanesc
Не ответил ли ответ? Он должен работать отлично. – yurisnm
@ Y.Melo Спасибо за ваш ответ! В настоящий момент я нахожусь в какой-то работе/возвращаясь в школу, поэтому завтра я буду смотреть на ваш ответ. – NickBow