有趣的是,这没有更好的记录。但基本上我只是想点击按钮时在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)
答案 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_())
答案 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)