gpt4 book ai didi

python - 在 PyQt 中打开第二个窗口

转载 作者:太空狗 更新时间:2023-10-29 17:57:03 25 4
gpt4 key购买 nike

我正在尝试使用 pyqt 在单击 QMainWindow 上的按钮时显示自定义 QDialog 窗口。我不断收到以下错误:

$ 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”)是全局的,这是获取信息的最佳方式那些功能?

最佳答案

我过去曾这样做过,我可以说它有效。假设你的按钮被称为“按钮”

class Main(QtGui.QMainWindow):
''' some stuff '''
def on_Button_clicked(self, checked=None):
if checked==None: return
dialog = QDialog()
dialog.ui = Ui_MyDialog()
dialog.ui.setupUi(dialog)
dialog.setAttribute(QtCore.Qt.WA_DeleteOnClose)
dialog.exec_()

这适用于我的应用程序,我相信它也适用于您的应用程序。希望它会有所帮助,将其应用于您的案例所需的一些更改应该非常简单。祝大家有美好的一天。

关于python - 在 PyQt 中打开第二个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com