1. 程式人生 > 其它 >PyQt5 在輸入框 LineEdit 中新增點選事件

PyQt5 在輸入框 LineEdit 中新增點選事件

技術標籤:PyQt5Python專欄qtpyqtpyqt5python

需求背景

在用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_())

執行效果如下:
在這裡插入圖片描述
點選上面確認按鈕
在這裡插入圖片描述


備註

有一個小瑕疵,就是Action不是button,點選後沒有視覺上的動態互動。
如果有其他實現該功能的方法,歡迎留言討論。