[英]PyQt QLineEdit and 'paste' event?
我到處搜索但找不到在 PyQt4 QLineEdit 中粘貼文本時觸發插槽/事件的示例?
將以下代碼添加到MyForm
類中:
在__init__()
內部
self.ui.lineEdit_URL.textChanged.connect(self.valueChanged)
定義新方法:
def valueChanged(self, text):
if QtGui.QApplication.clipboard().text() == text:
self.pasteEvent(text)
定義另一種方法:
def pasteEvent(self, text):
# this is your paste event, whenever any text is pasted in the
# 'lineEdit_URL', this method gets called.
# 'text' is the newly pasted text.
print text
您將必須通過覆蓋“ keyPressEvent”自己定義它。 例如:
from PyQt4 import QtGui, QtCore
import sys
class NoteText(QtGui.QLineEdit):
def __init__(self, parent):
super (NoteText, self).__init__(parent)
def keyPressEvent(self, event):
if event.matches(QtGui.QKeySequence.Paste):
self.setText("Bye")
class Test(QtGui.QWidget):
def __init__( self, parent=None):
super(Test, self).__init__(parent)
le = QtGui.QLineEdit()
nt = NoteText(le)
layout = QtGui.QHBoxLayout()
layout.addWidget(nt)
self.setLayout(layout)
app = QtGui.QApplication(sys.argv)
myWidget = Test()
myWidget.show()
app.exec_()
捕獲 CTRL-V,然后在將其粘貼到編輯器之前處理文本。
import pyperclip
class MyLineEdit(QLineEdit):
def __init__(self, parent):
super (MyLineEdit, self).__init__(parent)
def keyPressEvent(self, event):
if event.modifiers() == Qt.KeyboardModifier.ControlModifier and event.key() == Qt.Key.Key_V:
clipboard_content = pyperclip.paste()
self.setText('hi' + clipboard_content)
else:
super().keyPressEvent(event)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.