【发布时间】:2021-11-02 02:50:48
【问题描述】:
我为我的项目创建了一个 gui,我需要为 QPlainText 使用占位符文本。(我使用 qt 设计器创建 gui 并生成代码抛出 pyside)它有点乏味,但这就是我现在的滚动方式。我有一个占位符的问题 - 它不会显示在纯文本中,除非我在写然后删除。我需要它一直显示,除非占位符被点击或标签。我在网上找到了一些解决方案,但似乎没有一个对我有用。我看到的大多数答案都使用焦点功能,但我不太明白,即使我尝试将焦点设置为清除,它们也不能在我的整个 gui 上工作或其他对象。此外,我需要从 qt 设计器本身解决这个问题,或者使用我使用的主类 - 导致我每次都更改 gui 并生成一个新的,因此对 gui 中代码的更改不会进一步应用。
我添加了下面的代码作为我在项目中使用的明文的最小示例。而且我知道,如果我在最近对占位符进行更改后生成代码抛出 pyqt5,它将按我的意愿工作,但不幸的是我需要它在尚未更新的 pyside 中。
import sys
from PySide2.QtCore import *
from PySide2.QtGui import *
from PySide2.QtWidgets import *
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
if not MainWindow.objectName():
MainWindow.setObjectName(u"MainWindow")
MainWindow.resize(480, 640)
self.centralwidget = QWidget(MainWindow)
self.centralwidget.setObjectName(u"centralwidget")
self.shifted_text_encode = QPlainTextEdit(self.centralwidget)
self.shifted_text_encode.setObjectName(u"shifted_text_encode")
self.shifted_text_encode.setGeometry(QRect(80, 170, 311, 131))
self.shifted_text_encode.setFocusPolicy(Qt.StrongFocus)
self.shifted_text_encode.setTabChangesFocus(True)
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QStatusBar(MainWindow)
self.statusbar.setObjectName(u"statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QMetaObject.connectSlotsByName(MainWindow)
# setupUi
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QCoreApplication.translate("MainWindow", u"MainWindow", None))
self.shifted_text_encode.setPlainText("")
self.shifted_text_encode.setPlaceholderText(QCoreApplication.translate("MainWindow", u"Enter text", None))
# retranslateUi
【问题讨论】:
标签: python qt-designer pyside2