如何使用按钮从PyQt5获取QcomboBox的当前文本?

时间:2018-03-27 16:38:23

标签: python pyqt5

有趣的是,这没有更好的记录。但基本上我只是想点击按钮时在PyQT5中获取下拉QComboBox的值。
目前,当我使用下面的代码时,它只是在我在下拉列表中选择一个值后给我的值。我是PyQt的新手。

class MainWindow(QMainWindow):

def __init__(self):
    super(MainWindow, self).__init__()
    self.lineEdit = QLineEdit(self.centralwidget)
    self.lineEdit.setObjectName("lineEdit")

    self.templatetype = QComboBox(self.centralwidget)
    self.templatetype.setObjectName("templatetype")
    self.templatetype.addItem("Tracks")
    self.templatetype.addItem("Observations")
    self.templatetype.activated[str].connect(self.change_text)

    self.btn = QPushButton(self.centralwidget)        
    self.btn.setObjectName("btn")
    self.btn.clicked.connect(self.change_text)


def change_text(self,text):        
    self.lineEdit.setText(text)

3 个答案:

答案 0 :(得分:0)

简单的解决方案......

self.templatetype.activated[str].connect(self.change_text)

应该是

self.templatetype.highlighted[str].connect(self.change_text)

答案 1 :(得分:0)

试一试:

from PyQt5 import Qt

class MainWindow(Qt.QMainWindow):

    def __init__(self):
        super(MainWindow, self).__init__()

        self.main_widget = Qt.QWidget()
        self.setCentralWidget(self.main_widget)
        layout = Qt.QVBoxLayout(self.main_widget)

        self.lineEdit = Qt.QLineEdit(self)

        self.templatetype = Qt.QComboBox(self)
        self.templatetype.addItem("Tracks")
        self.templatetype.addItem("Observations")
        self.templatetype.activated[str].connect(self.combo_text)
        self.text = ""

        self.btn = Qt.QPushButton("Button", self)        
        self.btn.clicked.connect(self.change_text)

        layout.addWidget(self.lineEdit)
        layout.addWidget(self.templatetype)
        layout.addWidget(self.btn)
        layout.setAlignment(Qt.Qt.AlignCenter)

    def combo_text(self,text):
        self.text = self.templatetype.currentText()

    def change_text(self):  
        self.lineEdit.setText(self.text)      

if __name__ == '__main__':
    import sys
    app = Qt.QApplication(sys.argv)
    ex = MainWindow()
    ex.show()
    sys.exit(app.exec_())

enter image description here

答案 2 :(得分:0)

我不确定我是否完全理解你的问题。您只想在单击按钮时获取QComboBox中的文本?如果是这样的话,那就很简单了。首先,您需要获取QComboBox中的当前文字,然后将其放入QLineEdit。你不需要在这里使用信号。因此,您可以删除以下行:

self.templatetype.activated[str].connect(self.change_text)

并像这样更新您的change_text方法。

def change_text(self):
    current_value = self.templatetype.currentText()        
    self.lineEdit.setText(current_value)