我正在尝试使用PyQt5构建一个应用程序,该应用程序在双击一个QListWidget
中的项目时有一个“弹出窗口”的辅助窗口。PyQt5弹出窗口
下面是代码:
import sys
from PyQt5.QtWidgets import QWidget, QListWidget, QListWidgetItem, QLabel, QPushButton, QApplication
class exampleWidget(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
listWidget = QListWidget(self)
listWidget.itemDoubleClicked.connect(self.buildExamplePopup)
names = ["Jack", "Chris", "Joey", "Kim", "Duncan"]
for n in names:
QListWidgetItem(n, listWidget)
self.setGeometry(100, 100, 100, 100)
self.show()
@staticmethod
def buildExamplePopup(item):
name = item.text()
exPopup = examplePopup(name)
exPopup.setGeometry(100, 200, 100, 100)
exPopup.show()
class examplePopup(QWidget):
def __init__(self, name):
super().__init__()
self.name = name
self.initUI()
def initUI(self):
lblName = QLabel(self.name, self)
if __name__ == "__main__":
app = QApplication(sys.argv)
ex = exampleWidget()
sys.exit(app.exec_())
我想在列表框中的一个名称被双击第二个窗口弹出,但我不能为我的生命得到了examplePopup
小部件在屏幕上绘制。先谢谢您的帮助。
右....为什么它与'QDialog'工作,而不是? –
@DanielePantaleone。如果一个'QWidget'有一个父对象,但是'QDialog'不能是一个顶级窗口。在OP示例中,如果'exampleWidget'被赋予了一个父项,它将作为列表窗口小部件下方的子窗口小部件显示(但您必须调整主窗口的大小才能看到它)。这也将揭示设置父项的一个侧面问题,因为每次调用'buildExamplePopup'都会创建一个* new *小部件(即以前的小部件不会被销毁,因为Qt仍然有对它的引用)。所以最好使用'popup.setAttribute(Qt.WA_DeleteOnClose)'来避免这个问题。 – ekhumoro