我正在构建一个打开QDialog
的简单应用程序,并且从属于该子代的QComboBox
,我可以选择一个项目并查看一些信息。我需要做的是从comboBox(或该孩子的其他数据)获取所选项目显示的一些信息。
这是我用来打开子窗口小部件的代码:
class Window(QMainWindow):
def __init__(self):
#A lot of stuff in here
#I connect a QPushButton to this method to open the child
def Serial_connection(self, event):
configurePort.ConfigurePort(self).show()
这是孩子的代码:
class ConfigurePort(QDialog):
def __init__(self, parent = None):
QDialog.__init__(self, parent)
uic.loadUi("configurePort.ui", self)
self.initUi()
def initUi(self):
self.comboBox.activated[str].connect(self.Selected)
self.label.hide()
def Selected(self, text):
if text == "option 1":
self.label.setText("Option 1 selected")
现在,从Selected
方法,我需要获取文本:"选择选项1"并将其发送给父(QMainWindow
)以使用此信息做另一件事。
我该怎么做?如何从孩子那里检索数据?希望你能帮帮我。
答案 0 :(得分:1)
通常,当您使用临时对话框从用户获取信息时,对话框应为模态,因此您可以阻止所有其他操作,直到用户完成对话框。它还允许您像对待函数一样调用对话框,并从中获取结果。
以下是返回文本结果的模式对话框的示例。
class ConfigurePort(QDialog):
def __init__(self, parent = None):
QDialog.__init__(self, parent)
uic.loadUi("configurePort.ui", self)
self.initUi()
def initUi(self):
self.comboBox.activated[str].connect(self.Selected)
self.label.hide()
def Selected(self, text):
if text == "option 1":
self.label.setText("Option 1 selected")
def getLabelText(self):
return self.label.text()
@classmethod
def launch(cls, parent=None):
dlg = cls(parent)
dlg.exec_()
text = dlg.getLabelText()
return text
class Window(QMainWindow):
...
def Serial_connection(self, event):
text = configurePort.ConfigurePort.launch(self)
print text