gpt4 book ai didi

python - 占位符文本未显示(pyside/pyqt)

转载 作者:太空狗 更新时间:2023-10-29 22:13:16 29 4
gpt4 key购买 nike

学习 PySide,我正在调整文本编辑小部件 (QLineEdit) 并尝试使用 setPlaceHolderText 设置占位符文本,如下面的代码片段(我从 main 调用)。不幸的是,它没有像我预期的那样工作。代码运行,但文本框为空白,不显示占位符文本。我在 Windows 7,Python 2.7(在 iPython 中工作)。

class MyTextEdit(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.textEditor=QtGui.QLineEdit(self)
self.textEditor.move(50,15)
self.textEditor.setPlaceholderText("Don't mind me.")
self.setGeometry(100, 100, 200, 50)
self.show()

有人知道我做错了什么吗?我正在关注以下网站的示例:

http://nullege.com/codes/search/PyQt4.QtGui.QLineEdit.setPlaceholderText

http://www.pythoncentral.io/pyside-pyqt-tutorial-interactive-widgets-and-layout-containers/

并且看不出我在做什么不同。

最佳答案

由于您的小部件仅包含一个组件(QLineEdit),因此该组件一开始总是会获得焦点。占位符文本是 only shown如果编辑为空并且没有焦点*。

一个简单的解决方案是在显示您的小部件之前聚焦不同的组件,例如通过在 self.show() 之前插入 self.setFocus()
缺点是,这种方式用户必须先单击文本字段或按 Tab 才能写入该字段。为避免这种情况,您可以拦截小部件上的 keyPress 事件。

例子:

class MyTextEdit(QtGui.QWidget):
'''Some positioning'''
def __init__(self):
QtGui.QWidget.__init__(self)
self.textEditor=QtGui.QLineEdit(self)
self.textEditor.move(50,15)
self.textEditor.setPlaceholderText("Hi I'm de fault.")
self.setGeometry(100, 100, 200, 50)
self.setFocus()
self.show()

def keyPressEvent(self, evt):
self.textEditor.setFocus()
self.textEditor.keyPressEvent(evt)

*注意:这已在 Qt5 中更改只要行编辑为空,就会显示占位符文本。不幸的是,PySide 还不支持 Qt5,因此您必须使用 PyQt5。

关于python - 占位符文本未显示(pyside/pyqt),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24274318/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com