我正在嘗試使用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