需求背景
在用PyQt5做图形界面开发时,需要在输入框的最右边添加一个按钮,比如确认键
本篇文章使用QAction来实现,原理为QAction触发一个行为,绑定触发该行为后的槽函数。
下面直接上代码
import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QApplication, \
QAction, QLineEdit, QFormLayout, QHBoxLayout, QPushButton, QMessageBox
from PyQt5.QtGui import QIcon, QTextObject, QTextBlock
class TestAction(QWidget):
def __init__(self, parent=None):
super(TestAction, self).__init__(parent)
self.setWindowTitle('test')
win = QHBoxLayout()
pLineEdit = QLineEdit() # 线性输入框
act = QAction(self) # 定义一个行为
# act.setText('comfire') # 给该行为设置文本,但我这里不起作用~
act.setIcon(QIcon('./confirm.jpg')) # 设置行为icon,
act.triggered.connect(self.show_) # 绑定行为槽函数,这里槽函数为一个QMessageBox信息弹窗
pLineEdit.addAction(act, QLineEdit.TrailingPosition) # 将该行为添加到lineEdit最右端
win.addWidget(pLineEdit) # 将lineEdit添加到mainwindow
self.setLayout(win)
def show_(self):
QMessageBox.information(self, 'title', 'msg')
app = QApplication(sys.argv)
cli = TestAction()
cli.show()
sys.exit(app.exec_())
运行效果如下:
点击上面确认按钮