如何修复我的 pyqt 程序中的错误(未绑定方法的第一个参数必须具有类型 'QDialog')?
How to fix error in my pyqt programm (first argument of unbound method must have type 'QDialog') ?
输入 1 作为登录名和密码后,应该会出现一个新的 window,但出现错误。
在我对代码进行一些更改之前,它曾经工作正常,但我不知道到底是什么原因造成的。
# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore
import sys
app = QtGui.QApplication(sys.argv)
login = QtGui.QDialog()
login.setWindowTitle('login')
login.resize(100, 100)
login_form = QtGui.QFormLayout()
row1 = QtGui.QHBoxLayout()
user_input = QtGui.QLineEdit()
row1.addWidget(user_input)
login_form.addRow('user', row1)
row2 = QtGui.QHBoxLayout()
pwd_input = QtGui.QLineEdit()
row2.addWidget(pwd_input)
login_form.addRow('pwd', row2)
row3 = QtGui.QHBoxLayout()
login_btn = QtGui.QPushButton('LOGIN')
exit_btn = QtGui.QPushButton('EXIT')
row3.addWidget(login_btn)
row3.addWidget(exit_btn)
login_form.addRow(row3)
login.setLayout(login_form)
def handleLogin():
if (user_input.text() == '1' and
pwd_input.text() == '1'):
QtGui.QDialog.accept()
else:
QtGui.QMessageBox.warning(login, 'Error', 'Bad user or password',
buttons = QtGui.QMessageBox.Close,
defaultButton = QtGui.QMessageBox.Close)
QtCore.QObject.connect(login_btn, QtCore.SIGNAL('clicked()'), handleLogin)
if login.exec_() == QtGui.QDialog.Accepted:
window = QtGui.QWidget()
window.show()
sys.exit(app.exec_())
发生该错误是因为您试图通过 class 而不是实例调用方法。试试这个:
def handleLogin():
if (user_input.text() == '1' and pwd_input.text() == '1'):
login.accept()
输入 1 作为登录名和密码后,应该会出现一个新的 window,但出现错误。
在我对代码进行一些更改之前,它曾经工作正常,但我不知道到底是什么原因造成的。
# -*- coding: utf-8 -*-
from PyQt4 import QtGui, QtCore
import sys
app = QtGui.QApplication(sys.argv)
login = QtGui.QDialog()
login.setWindowTitle('login')
login.resize(100, 100)
login_form = QtGui.QFormLayout()
row1 = QtGui.QHBoxLayout()
user_input = QtGui.QLineEdit()
row1.addWidget(user_input)
login_form.addRow('user', row1)
row2 = QtGui.QHBoxLayout()
pwd_input = QtGui.QLineEdit()
row2.addWidget(pwd_input)
login_form.addRow('pwd', row2)
row3 = QtGui.QHBoxLayout()
login_btn = QtGui.QPushButton('LOGIN')
exit_btn = QtGui.QPushButton('EXIT')
row3.addWidget(login_btn)
row3.addWidget(exit_btn)
login_form.addRow(row3)
login.setLayout(login_form)
def handleLogin():
if (user_input.text() == '1' and
pwd_input.text() == '1'):
QtGui.QDialog.accept()
else:
QtGui.QMessageBox.warning(login, 'Error', 'Bad user or password',
buttons = QtGui.QMessageBox.Close,
defaultButton = QtGui.QMessageBox.Close)
QtCore.QObject.connect(login_btn, QtCore.SIGNAL('clicked()'), handleLogin)
if login.exec_() == QtGui.QDialog.Accepted:
window = QtGui.QWidget()
window.show()
sys.exit(app.exec_())
发生该错误是因为您试图通过 class 而不是实例调用方法。试试这个:
def handleLogin():
if (user_input.text() == '1' and pwd_input.text() == '1'):
login.accept()