我是pyqt的新手,我正在尝试创建一个选择器listwidgets,它可以被其他函数调用,传入条目供用户选择,并从用户从函数中选择的值中获取值。在
这就是我要做的:
class SelectorDialog(QtGui.QWidget):
def __init__(self, parent=None):
super(SelectorDialog, self).__init__(parent)
QtGui.QWidget.__init__(self)
self.setWindowFlags(QtCore.Qt.Dialog)
self.setupUi(self)
someItems = ['itemA', 'itemB', 'itemSomething']
for item in someItems:
list = QtGui.QListWidgetItem(item)
self.listWidget.addItem(list)
#self.show()
def setupUi(self, Form):
Form.setWindowTitle('To which item?')
self.verticalLayoutWidget = QtGui.QWidget(Form)
self.verticalLayoutWidget.setGeometry(QtCore.QRect(0, 0, 500, 150))
self.verticalLayout = QtGui.QVBoxLayout(self.verticalLayoutWidget)
self.listWidget = QtGui.QListWidget(self.verticalLayoutWidget)
self.verticalLayout.addWidget(self.listWidget)
self.okButton = QtGui.QPushButton("OK")
self.cancelButton = QtGui.QPushButton("Cancel")
self.hbox = QtGui.QHBoxLayout(self.verticalLayoutWidget)
self.hbox.addStretch(1)
self.hbox.addWidget(self.okButton)
self.hbox.addWidget(self.cancelButton)
self.verticalLayout.addLayout(self.hbox)
QtCore.QMetaObject.connectSlotsByName(Form)
self.cancelButton.clicked.connect(lambda: self.close())
self.okButton.clicked.connect(lambda: self.pick(self))
def pick(self, Form):
for item in self.listWidget.selectedItems():
picked = str(item.text())
print picked
def whichItem():
selector = SelectorDialog(parent)
#find out picked item by SelecteorDialog, how ?
首先,如果您的对象是一个对话框,那么最好从}。这允许使用QDialog的}方法。在
QDialog
子类化,而不是{accept()
和{注意,我目前无法测试以下内容,但它基于我编写的代码。
因此,在
setupUi
中,我将进行以下更改:然后,当您调用对话框时,您可以检查用户是否真的“接受”了对话框还是取消了它:
^{pr2}$然后在类定义中进行以下更改:
相关问题 更多 >
编程相关推荐