问题描述
我为桌面软件创建了代码。那就是,在QLineEdit中,我设置了一个输入掩码。当我运行程序并单击该行编辑时,我在行尾看到了光标位置。下面是我的一些代码。...
from PyQt5 import QtCore,QtGui,QtWidgets
class Ui_MainWindow(object):
def setupUi(self,MainWindow):
MainWindow.setobjectName("MainWindow")
MainWindow.resize(380,191)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setobjectName("centralwidget")
self.lineEdit = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit.setGeometry(QtCore.QRect(80,20,211,41))
font = QtGui.QFont()
font.setPointSize(11)
self.lineEdit.setFont(font)
self.lineEdit.setobjectName("lineEdit")
self.lineEdit_2 = QtWidgets.QLineEdit(self.centralwidget)
self.lineEdit_2.setGeometry(QtCore.QRect(80,110,41))
font = QtGui.QFont()
font.setPointSize(11)
self.lineEdit_2.setFont(font)
self.lineEdit_2.setobjectName("lineEdit_2")
self.lineEdit_2.setInputMask("00.00")
self.lineEdit_2.setCursorPosition(0)
MainWindow.setCentralWidget(self.centralwidget)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self,MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setwindowTitle(_translate("MainWindow","MainWindow"))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
我已经提到过setCursorPosition(0)。但这是行不通的。当我单击lineEdit_2时,我希望该光标位于该lineedit的开头。
self.lineEdit_2.setInputMask("00.00")
self.lineEdit_2.setCursorPosition(0)
解决方法
您可以在行编辑中安装事件过滤器,并对任何鼠标单击事件做出反应:
from PyQt5 import QtCore,QtWidgets
from ui_mainwindow import Ui_MainWindow
class MainWindow(QtWidgets.QMainWindow,Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.lineEdit_2.installEventFilter(self)
def eventFilter(self,source,event):
if source == self.lineEdit_2 and event.type() == QtCore.QEvent.MouseButtonPress:
self.lineEdit_2.setFocus(QtCore.Qt.MouseFocusReason)
self.lineEdit_2.setCursorPosition(0)
return True
return super().eventFilter(source,event)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
请注意,您应该使用单独的脚本编写以上内容,并将其用作主程序;您发布的代码(取自pyuic
的输出)应该从不修改。进一步了解using Designer。