gpt4 book ai didi

python - 在 Python (PyQt4) 中显示弹出窗口

转载 作者:行者123 更新时间:2023-11-28 20:10:04 25 4
gpt4 key购买 nike

我需要知道如何在用户单击按钮时弹出对话框。

我对 Python 和 PyQt/QtDesigner 都比较陌生。我只在其中使用了大约一个月,但我认为我掌握得很好。

这是我所拥有的:我在 QtDesigner 中设计的主对话框(这是应用程序的主要部分)。我使用 pyuic4easy 将 .ui 转换为 .py。

我想做的是:在 QtDesigner 中设计一个新对话框,并在用户单击第一个(主)对话框上的按钮时以某种方式使其弹出。

这是我的主对话框的代码:

import sys
from PyQt4.QtCore import *
from loginScreen import *


class MyForm(QtGui.QDialog):

def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_Dialog()
self.ui.setupUi(self)
QtCore.QObject.connect(self.ui.pushButton, QtCore.SIGNAL('clicked()'), self.popup)
...

... Some functions ...

def popup(self):
#Pop-up the new dialog

if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp= MyForm()
myapp.show()
sys.exit(app.exec_())

如您所见,我已将第一个按钮连接到名为“popup”的方法,该方法需要填充代码才能弹出第二个窗口。我该怎么做呢?请记住,我已经在 QtDesigner 中设计了我的第二个对话框,我不需要创建一个新对话框。

感谢大家的帮助!

最佳答案

So as you can see, I've connected the first button to a method named 'popup', which needs to be filled in with code to make my second window pop up. How do I go about doing this?

与您在主窗口 (MyForm) 中执行此操作的方式几乎相同。

像往常一样,您为第二个对话框的 QtDesigner 代码编写了一个包装器类(就像您对 MyForm 所做的那样)。我们称它为 MyPopupDialog。然后在您的 popup 方法中,您创建一个实例,然后使用 exec_()show() 显示您的实例,具体取决于您是否需要模态或非模态对话框。 (如果您不熟悉 Modal/Modeless 概念,您可以引用 documentation. )

所以整体看起来像这样(有一些修改):

# Necessary imports

class MyPopupDialog(QtGui.QDialog):
def __init__(self, parent=None):
# Regular init stuff...
# and other things you might want


class MyForm(QtGui.QDialog):
def __init__(self, parent=None):
# Here, you should call the inherited class' init, which is QDialog
QtGui.QDialog.__init__(self, parent)

# Usual setup stuff
self.ui = Ui_Dialog()
self.ui.setupUi(self)

# Use new style signal/slots
self.ui.pushButton.clicked.connect(self.popup)

# Other things...

def popup(self):
self.dialog = MyPopupDialog()

# For Modal dialogs
self.dialog.exec_()

# Or for modeless dialogs
# self.dialog.show()

if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
myapp= MyForm()
myapp.show()
sys.exit(app.exec_())

关于python - 在 Python (PyQt4) 中显示弹出窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9074195/

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