python - 在 UI 上为 QLineEdit 的内容加下划线
问题描述
我想在 UI 上显示 QLineEdit 的内容时加下划线——这个数字恰好是一个格式化的(美元)数字,比如 $14,577
我不想在整个行编辑的长度上放置一个“边框底部”,我也不想使用 QT 设计器来设置字体/下划线,因为我只想在某些情况下下划线。
这是我用来显示和格式化数字的代码行。可以更改为包括下划线吗?
self.ui.car1.setText("${:,}".format(self.car1))
解决方案
QLineEdit 不允许您实现您想要的,因此一种解决方法是使用单行配置 QTextEdit(结合此问题的一些答案)并使用 html 或 QTextCharFormat 设置下划线:
import sys
from PyQt5 import QtCore, QtGui, QtWidgets
class LineEdit(QtWidgets.QTextEdit):
returnPressed = QtCore.pyqtSignal()
def __init__(self, parent=None):
super().__init__(parent)
# single line configuration
self.setLineWrapMode(QtWidgets.QTextEdit.NoWrap)
self.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
self.setFixedHeight(
self.document().documentLayout().documentSize().height()
+ self.height()
- self.viewport().height()
)
def keyPressEvent(self, event):
if event.key() in (QtCore.Qt.Key_Return, QtCore.Qt.Key_Enter):
self.returnPressed.emit()
return
super().keyPressEvent(event)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
textedit = LineEdit()
textedit.setHtml("""This is a <u>parragraph</u> :-)""")
lay = QtWidgets.QVBoxLayout(w)
lay.addWidget(textedit)
lay.addStretch()
w.show()
sys.exit(app.exec_())
输出:
推荐阅读
- javascript - 随机放置淡入淡出的 div
- sql - 尝试取消嵌套 Text[] 类型的列正在跳过为空的列 - Postgres
- sql-server - SQL 数据库 DevOps CI-CD 管道是否需要 Visual Studio?
- react-native - 凭据:“省略”选项在 MaxToyberman/react-native-ssl-pinning 中不起作用
- postgresql - 分析查询 postgres
- php - 获取 Wordpress 页面加载的每个函数的执行时间。(用于分析,寻找性能瓶颈)
- build - NextJs 构建失败
- spring-boot - Spring boot Okhttp 调用成功但 RestTemplate 给出 Connection Timed Out
- javascript - 如何从模板创建多个具有给定名称的电子表格
- amazon-web-services - How to insert AWS Cloudtrail logs to AWS Timestream database table?