您如何自定义PYQT5文本框

发布于 2025-02-13 19:52:17 字数 355 浏览 0 评论 0原文

我一直在尝试自定义文本框以尝试看起来像这样并尝试格式化文本,但是到目前为止,我还没有奏效,所以我恢复了基本代码:

self.tbx = QLineEdit(self)
self.tbx.resize(400,75)
layout.addWidget(self.tbx)
layout.addStretch()

I have been trying to customised the text box to try and look like this and trying to format the text but so far nothing has worked so i have reverted back to the base code :
EXAMPLE

self.tbx = QLineEdit(self)
self.tbx.resize(400,75)
layout.addWidget(self.tbx)
layout.addStretch()

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

以酷 2025-02-20 19:52:18

您可以使用QGroupBox,然后在QGroupbox中添加QlineEdit。

您可以自定义QGroupbox具有一个圆角和QlineDit,以具有透明的背景,并且使用@Kalzso提到的样式表没有边框。

以下是一个示例:

文件mainwindow.py(由pyuic5生成):

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(480, 254)
        MainWindow.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setStyleSheet("QWidget\n"
"{\n"
"    background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgb(72, 48, 255), stop: 1 rgb(204, 51, 255) );\n"
"}")
        self.centralwidget.setObjectName("centralwidget")
        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(130, 80, 181, 61))
        self.groupBox.setStyleSheet("QGroupBox {\n"
"    border: 2px solid silver;\n"
"    border-radius: 6px;\n"
"    background: rgba(0, 0, 0, 0);\n"
"    margin-top: 4px;\n"
"}\n"
"QGroupBox::title {\n"
"    subcontrol-origin: margin;\n"
"    left: 7px;\n"
"    color: white;\n"
"}")
        self.groupBox.setObjectName("groupBox")
        self.tbx = QtWidgets.QLineEdit(self.groupBox)
        self.tbx.setGeometry(QtCore.QRect(20, 20, 141, 20))
        self.tbx.setStyleSheet("QLineEdit {\n"
"    background: rgba(0, 0, 0, 0);\n"
"    border: none;\n"
"    color: white;\n"
"}")
        self.tbx.setObjectName("tbx")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 480, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.groupBox.setTitle(_translate("MainWindow", "Text field"))

和主文件:

from MainWindow import Ui_MainWindow

import sys
from PyQt5 import QtWidgets, uic

from MainWindow import Ui_MainWindow


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, *args, obj=None, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setupUi(self)


app = QtWidgets.QApplication(sys.argv)

window = MainWindow()
window.show()
app.exec()

给出:

“输入图像描述在这里”

我的解决方案的限制:

,我的解决方案中QlineIt的光标是与颜色相比的,而您想要的可能是白色光标。我发现我很难解决这个问题。我发现这个答案可能有助于改变光标的颜色。也许有人可以帮助改善此答案并解决此问题。

You can using a QGroupBox, and add the QLineEdit inside the QGroupBox.

You can customize the QGroupBox to have a round corner and the QLineEdit to have a transparent background and no border using stylesheets mentioned by @kalzso.

The following is an example:

File MainWindow.py (generated by pyuic5):

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'mainwindow.ui'
#
# Created by: PyQt5 UI code generator 5.15.6
#
# WARNING: Any manual changes made to this file will be lost when pyuic5 is
# run again.  Do not edit this file unless you know what you are doing.


from PyQt5 import QtCore, QtGui, QtWidgets


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(480, 254)
        MainWindow.setStyleSheet("")
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setStyleSheet("QWidget\n"
"{\n"
"    background-color: QLinearGradient( x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 rgb(72, 48, 255), stop: 1 rgb(204, 51, 255) );\n"
"}")
        self.centralwidget.setObjectName("centralwidget")
        self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
        self.groupBox.setGeometry(QtCore.QRect(130, 80, 181, 61))
        self.groupBox.setStyleSheet("QGroupBox {\n"
"    border: 2px solid silver;\n"
"    border-radius: 6px;\n"
"    background: rgba(0, 0, 0, 0);\n"
"    margin-top: 4px;\n"
"}\n"
"QGroupBox::title {\n"
"    subcontrol-origin: margin;\n"
"    left: 7px;\n"
"    color: white;\n"
"}")
        self.groupBox.setObjectName("groupBox")
        self.tbx = QtWidgets.QLineEdit(self.groupBox)
        self.tbx.setGeometry(QtCore.QRect(20, 20, 141, 20))
        self.tbx.setStyleSheet("QLineEdit {\n"
"    background: rgba(0, 0, 0, 0);\n"
"    border: none;\n"
"    color: white;\n"
"}")
        self.tbx.setObjectName("tbx")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 480, 23))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.groupBox.setTitle(_translate("MainWindow", "Text field"))

And the main file:

from MainWindow import Ui_MainWindow

import sys
from PyQt5 import QtWidgets, uic

from MainWindow import Ui_MainWindow


class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
    def __init__(self, *args, obj=None, **kwargs):
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setupUi(self)


app = QtWidgets.QApplication(sys.argv)

window = MainWindow()
window.show()
app.exec()

Which gives:

enter image description here

Limitation of my solution:

However, the cursor of the QLineEdit in my solution is of contrasting color, while what you want may be a white cursor. I find it difficult for me to solve this. I find this answer may help to change the color of the cursor. Maybe someone can help to improve this answer and solve this problem.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文