我试图在点击QMainWindow上的一个按钮时使用pyqt显示一个自定义QDialog窗口。我不断收到以下错误:在PyQt中打开第二个窗口
$ python main.py
DEBUG: Launch edit window
Traceback (most recent call last):
File "/home/james/Dropbox/Database/qt/ui_med.py", line 23, in launchEditWindow
dialog = Ui_Dialog(c)
File "/home/james/Dropbox/Database/qt/ui_edit.py", line 15, in __init__
QtGui.QDialog.__init__(self)
TypeError: descriptor '__init__' requires a 'sip.simplewrapper' object but received a 'Ui_Dialog'
我已经看了几个网上的教程,但大多停止只是短暂展示了如何使用内置的对话框窗口非的。我使用pyuic4生成了主窗口和对话框的代码。我认为应该是相关的代码如下。我在这里错过了什么?
class Ui_Dialog(object):
def __init__(self, dbConnection):
QtGui.QDialog.__init__(self)
global c
c = dbConnection
class Ui_MainWindow(object):
def __init__(self, dbConnection):
global c
c = dbConnection
def launchEditWindow(self):
print "DEBUG: Launch edit window"
dialog = QtGui.QDialog()
dialogui = Ui_Dialog(c)
dialogui = setupUi(dialog)
dialogui.show()
class StartQT4(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
conn = sqlite3.connect('meds.sqlite')
c = conn.cursor()
self.ui = Ui_MainWindow(c)
self.ui.setupUi(self)
def main():
app = QtGui.QApplication(sys.argv)
program = StartQT4()
program.show()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
奖金的问题:因为它看起来就像你不能传递PyQt的回调函数的参数,是设置一些东西,否则将作为参数传递(命名不佳“C”)是全球性的最佳途径将信息转化为这些功能?
'Ui_MainWindow .__ init__'有一个参数:'dbConnection',你似乎没有通过:'self.ui = Ui_MainWindow()' - 你的代码如何工作? – fviktor 2009-11-27 18:46:09
哎呦。我暂时删除了数据库中的问题,看看它是否是问题的一部分。然后,我忘了重新放入代码后重新加入。 – James 2009-11-27 21:31:31