问题:目前想使用pyqt,通过控制combobox在plainTextEdi上显示文本,这个已经实现,
现在我单纯地只想在_**时_下方加入下滑线,但是plainTextEdi它的font是设置全部下滑线。
如下方的02时,或者是我换其他什么模块可以解决这个问题
图如下:
import sys
from untitled9 import Ui_MainWindow
import pkgutil
from PyQt5 import QtWidgets
import PyQt5.sip
class mywindow(QtWidgets.QWidget, Ui_MainWindow): # 这个地方要注意Ui_MainWindow
def __init__(self):
super(mywindow, self).__init__()
self.setupUi(self)
if __name__=="__main__":
app=QtWidgets.QApplication(sys.argv)
myshow=mywindow()
myshow.show()#显示
sys.exit(app.exec_())
第二个
```python
from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.setEnabled(True)
MainWindow.resize(1354, 942)
font = QtGui.QFont()
font.setFamily("仿宋_GB2312")
font.setPointSize(16)
font.setUnderline(False)
MainWindow.setFont(font)
#icon = QtGui.QIcon.fromTheme("按时")
# MainWindow.setWindowIcon(icon)
#MainWindow.setLayoutDirection(QtCore.Qt.LeftToRight)
#MainWindow.setAutoFillBackground(True)
#MainWindow.setToolButtonStyle(QtCore.Qt.ToolButtonTextOnly)
#MainWindow.setAnimated(False)
#MainWindow.setDocumentMode(False)
#MainWindow.setDockNestingEnabled(False)
#MainWindow.setUnifiedTitleAndToolBarOnMac(False)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setEnabled(True)
font = QtGui.QFont()
font.setFamily("黑体")
font.setPointSize(20)
font.setUnderline(False)
self.centralwidget.setFont(font)
self.centralwidget.setMouseTracking(False)
self.centralwidget.setTabletTracking(False)
self.centralwidget.setObjectName("centralwidget")
self.comboBox_5 = QtWidgets.QComboBox(self.centralwidget)
self.comboBox_5.setGeometry(QtCore.QRect(220, 656, 331, 39))
font = QtGui.QFont()
font.setFamily("黑体")
font.setPointSize(20)
font.setItalic(False)
font.setUnderline(False)
self.comboBox_5.setFont(font)
self.comboBox_5.setFocusPolicy(QtCore.Qt.NoFocus)
self.comboBox_5.setEditable(True)
self.comboBox_5.setObjectName("comboBox_5")
self.comboBox_5.addItem("")
self.comboBox_5.addItem("")
self.comboBox_5.addItem("")
self.comboBox_5.addItem("")
self.comboBox_5.addItem("")
self.pushButton_6 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_6.setGeometry(QtCore.QRect(0, 730, 551, 50))
self.pushButton_6.setFocusPolicy(QtCore.Qt.NoFocus)
self.pushButton_6.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
self.pushButton_6.setAcceptDrops(False)
self.pushButton_6.setAutoDefault(False)
self.pushButton_6.setDefault(False)
self.pushButton_6.setObjectName("pushButton_6")
self.comboBox = QtWidgets.QComboBox(self.centralwidget)
self.comboBox.setGeometry(QtCore.QRect(220, 280, 331, 39))
self.comboBox.setFocusPolicy(QtCore.Qt.NoFocus)
self.comboBox.setEditable(True)
self.comboBox.setObjectName("comboBox")
self.comboBox.addItem("")
self.comboBox.addItem("")
self.comboBox_3 = QtWidgets.QComboBox(self.centralwidget)
self.comboBox_3.setGeometry(QtCore.QRect(220, 410, 331, 39))
self.comboBox_3.setFocusPolicy(QtCore.Qt.NoFocus)
self.comboBox_3.setEditable(True)
self.comboBox_3.setObjectName("comboBox_3")
self.comboBox_3.addItem("")
self.comboBox_3.addItem("")
self.comboBox_4 = QtWidgets.QComboBox(self.centralwidget)
self.comboBox_4.setEnabled(True)
self.comboBox_4.setGeometry(QtCore.QRect(220, 110, 140, 39))
self.comboBox_4.setFocusPolicy(QtCore.Qt.NoFocus)
self.comboBox_4.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
self.comboBox_4.setAcceptDrops(False)
self.comboBox_4.setToolTip("")
self.comboBox_4.setLayoutDirection(QtCore.Qt.LeftToRight)
self.comboBox_4.setEditable(True)
self.comboBox_4.setObjectName("comboBox_4")
self.comboBox_4.addItem("")
self.comboBox_4.addItem("")
self.comboBox_2 = QtWidgets.QComboBox(self.centralwidget)
self.comboBox_2.setEnabled(True)
self.comboBox_2.setGeometry(QtCore.QRect(379, 110, 171, 39))
self.comboBox_2.setFocusPolicy(QtCore.Qt.NoFocus)
self.comboBox_2.setContextMenuPolicy(QtCore.Qt.NoContextMenu)
self.comboBox_2.setEditable(True)
self.comboBox_2.setObjectName("comboBox_2")
self.comboBox_2.addItem("")
self.comboBox_2.addItem("")
self.pushButton_5 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_5.setGeometry(QtCore.QRect(0, 140, 160, 50))
self.pushButton_5.setObjectName("pushButton_5")
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(0, 270, 160, 50))
self.pushButton_3.setObjectName("pushButton_3")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(0, 410, 160, 50))
self.pushButton_2.setObjectName("pushButton_2")
self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_4.setGeometry(QtCore.QRect(0, 650, 160, 50))
self.pushButton_4.setAutoDefault(False)
self.pushButton_4.setObjectName("pushButton_4")
self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget)
self.plainTextEdit.setGeometry(QtCore.QRect(580, 110, 711, 701))
font = QtGui.QFont()
font.setFamily("黑体")
font.setPointSize(20)
font.setUnderline(False)
self.plainTextEdit.setFont(font)
self.plainTextEdit.setPlainText("")
self.plainTextEdit.setObjectName("plainTextEdit")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(0, 810, 551, 50))
self.pushButton.setObjectName("pushButton")
self.comboBox.raise_()
self.comboBox_3.raise_()
self.comboBox_4.raise_()
self.comboBox_2.raise_()
self.comboBox_5.raise_()
self.pushButton_6.raise_()
self.pushButton_5.raise_()
self.pushButton_3.raise_()
self.pushButton_2.raise_()
self.pushButton_4.raise_()
self.plainTextEdit.raise_()
self.pushButton.raise_()
#MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 1354, 33))
self.menubar.setDefaultUp(True)
self.menubar.setObjectName("menubar")
#MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setSizeGripEnabled(True)
self.statusbar.setObjectName("statusbar")
#MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.comboBox_4.activated['QString'].connect(self.plainTextEdit.insertPlainText) # type: ignore
self.comboBox_2.activated['QString'].connect(self.plainTextEdit.insertPlainText) # type: ignore
self.comboBox.activated['QString'].connect(self.plainTextEdit.insertPlainText) # type: ignore
self.comboBox_3.activated['QString'].connect(self.plainTextEdit.insertPlainText) # type: ignore
self.comboBox_5.activated['QString'].connect(self.plainTextEdit.insertPlainText) # type: ignore
self.pushButton_6.clicked.connect(self.plainTextEdit.undo) # type: ignore
self.pushButton.clicked.connect(self.plainTextEdit.clear) # type: ignore
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "ss"))
self.comboBox_5.setItemText(0, _translate("MainWindow", "01时"))
self.comboBox_5.setItemText(1, _translate("MainWindow", "02时"))
self.comboBox_5.setItemText(2, _translate("MainWindow", "03时"))
self.comboBox_5.setItemText(3, _translate("MainWindow", "04时"))
self.comboBox_5.setItemText(4, _translate("MainWindow", "05时"))
self.pushButton_6.setText(_translate("MainWindow", "删除此行"))
self.comboBox.setItemText(0, _translate("MainWindow", "hai"))
self.comboBox.setItemText(1, _translate("MainWindow", "lei"))
self.comboBox_3.setItemText(0, _translate("MainWindow", "尽快"))
self.comboBox_3.setItemText(1, _translate("MainWindow", "好的"))
self.comboBox_4.setItemText(0, _translate("MainWindow", "谢谢"))
self.comboBox_4.setItemText(1, _translate("MainWindow", "NIH"))
self.comboBox_2.setItemText(0, _translate("MainWindow", "12113"))
self.comboBox_2.setItemText(1, _translate("MainWindow", "5123"))
self.pushButton_5.setText(_translate("MainWindow", "A"))
self.pushButton_3.setText(_translate("MainWindow", "B"))
self.pushButton_2.setText(_translate("MainWindow", "C"))
self.pushButton_4.setText(_translate("MainWindow", "E"))
self.pushButton.setText(_translate("MainWindow", "清空内容"))
```
有点没明白
你想在plainTextEdit中文本设置下划线?
可以实现指定文本区间的文本 设置下划线:参考(七 美化-3)PyQT5 文本高亮与下划线:https://www.jianshu.com/p/67202e8c0811
该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
你可以使用 Qt 的 QTextCharFormat
类来实现部分文本下划线的效果。首先,你需要获取到 plainTextEdit 中要加下划线的文本的 QTextCursor 对象,然后使用 QTextCursor.setCharFormat()
方法设置该文本的格式。
以下是一个示例代码,它会在 plainTextEdit 中的 "02" 文本下方添加下划线:
from PyQt5.QtGui import QTextCharFormat, QFont, QPalette, QColor
from PyQt5.QtCore import Qt
# 获取 QTextCursor 对象
cursor = plainTextEdit.textCursor()
cursor.movePosition(QTextCursor.Start)
cursor.movePosition(QTextCursor.Right, QTextCursor.KeepAnchor, 2)
# 创建 QTextCharFormat 对象并设置下划线
format = QTextCharFormat()
format.setFontUnderline(True)
format.setUnderlineColor(QColor(Qt.red))
cursor.setCharFormat(format)
# 设置字体和颜色
font = QFont()
font.setPointSize(16)
palette = QPalette()
palette.setColor(QPalette.Text, QColor(Qt.black))
cursor.mergeCharFormat(format)
cursor.setCharFormat(format)
cursor.insertText(" ", format)
在上面的代码中,我们首先获取到 plainTextEdit
的 QTextCursor 对象,并使用 movePosition()
方法将光标移动到 "02" 文本的开始处。然后,我们创建了一个 QTextCharFormat
对象,并使用 setFontUnderline()
方法将它的下划线设置为 True。接着,我们使用 setUnderlineColor()
方法设置下划线的颜色为红色。
最后,我们使用 mergeCharFormat()
方法将字体和颜色的设置应用到下划线上,使用 setCharFormat()
方法将下划线应用到 "02" 文本上,并使用 insertText()
方法插入一个空格,以便在 "02" 和后面的文本之间留出一些空隙。
你可以根据自己的实际情况,调整下划线的颜色、字体等属性。
如果以上回答对您有所帮助,点击一下采纳该答案~谢谢
字体下拉列表框
根据您的描述,您想要在特定条件下将下划线添加到plainTextEdit
组件中。根据提供的代码,我注意到您使用了QPlainTextEdit
组件来显示文本,并且希望在选择特定时间时添加下划线。
要实现这个功能,您可以按照以下步骤进行操作:
Ui_MainWindow
类中,找到comboBox_5
组件的槽函数连接语句,将其连接到一个新的自定义槽函数,用于处理时间选择事件。self.comboBox_5.activated['QString'].connect(self.handleTimeSelection)
Ui_MainWindow
类中,添加一个名为handleTimeSelection
的槽函数,用于在选择特定时间时将下划线添加到文本框中。def handleTimeSelection(self, selectedTime):
if selectedTime == "02时":
cursor = self.plainTextEdit.textCursor()
cursor.movePosition(QtGui.QTextCursor.StartOfLine)
cursor.movePosition(QtGui.QTextCursor.EndOfLine, QtGui.QTextCursor.KeepAnchor)
cursor.setCharFormat(QtGui.QTextCharFormat())
cursor.setUnderlineStyle(QtGui.QTextCharFormat.SingleUnderline)
self.plainTextEdit.setTextCursor(cursor)
在这个示例中,我们检查选择的时间是否为"02时",如果是,则获取文本框的光标,并在当前行的文本上添加下划线。通过以上修改,当选择"02时"时,您应该能够在plainTextEdit
中将下划线添加到相应的文本行上。您可以根据需要进行调整和扩展,以满足您的实际需求。