PyQt5 在輸入框 LineEdit 中新增點選事件
阿新 • • 發佈:2021-02-19
技術標籤: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,點選後沒有視覺上的動態互動。
如果有其他實現該功能的方法,歡迎留言討論。