pyqt5 做一个下拉框和多个文本框,每点选下拉框的一个选项就往光标所在文本框里添加下拉框的文本。
时间: 2023-05-21 15:07:37 浏览: 405
PyQt5下拉式复选框QComboCheckBox的实例
5星 · 资源好评率100%
您可以使用QComboBox和QTextEdit来实现此功能。在下拉框的选项更改时,捕获QComboBox.currentIndexChanged事件,然后从下拉框中获取所选项的文本,并将其插入到当前文本框中的光标位置。您可以使用QTextEdit.insertPlainText()方法来插入文本。
以下是示例代码:
```python
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QComboBox, QTextEdit, QApplication
from PyQt5.QtCore import Qt
class MyWidget(QWidget):
def __init__(self):
super().__init__()
# 创建下拉框和文本框
self.combo = QComboBox()
self.textboxes = [QTextEdit() for _ in range(3)]
# 为下拉框添加选项
self.combo.addItems(['Option 1', 'Option 2', 'Option 3'])
# 创建一个垂直布局,并向其中添加下拉框和文本框
vbox = QVBoxLayout()
vbox.addWidget(self.combo)
for textbox in self.textboxes:
vbox.addWidget(textbox)
# 创建一个水平布局,并向其中添加垂直布局
hbox = QHBoxLayout()
hbox.addLayout(vbox)
self.setLayout(hbox)
# 连接QComboBox.currentIndexChanged事件到槽函数下拉框选项更改事件
self.combo.currentIndexChanged.connect(self.combo_changed)
def combo_changed(self, index):
# 获取选中的下拉框选项文本
selected_option = self.combo.currentText()
# 获取当前处于焦点的文本框
current_textbox = QApplication.focusWidget()
# 将选项文本插入到当前文本框的光标位置
current_textbox.insertPlainText(selected_option + '\n')
if __name__ == '__main__':
app = QApplication([])
widget = MyWidget()
widget.show()
app.exec_()
```
这个例子中,我们创建了一个QComboBox和3个QTextEdit,用水平布局和垂直布局将它们组合在一起。然后我们捕获了QComboBox.currentIndexChanged事件,并在其中获取所选项的文本,然后将其插入到当前文本框中的光标位置。注意,我们使用QWidget.focusWidget()方法获取当前处于焦点的文本框。
阅读全文