我在QLineEdit的textChanged.connect()函数块中使用了这段代码。如果文本框的长度大于1,则所有标签都将显示相关且正确的数据,但如果文本框的长度等于0(通过按backspace清除文本框文本),则不会发生任何事情。我注意到屏幕上的"Enter block“和"End Block”消息(打印语句)。所有标签文本均保留为空。也可以尝试使用adjustSize(),show(),resize()。
if len(self.textbox_search.text()) >= 1:
self.label_master_count.setText(str(len(self.listbox_master)))
self.label_starts_count.setText(str(len(self.item_startswith)))
self.label_contains_count.setText(str(len(self.item_contains)))
self.label_ends_count.setText(str(len(self.item_endswith)))
else:
print("Enter Blocks")
self.label_starts_count.setText("9999")
self.label_starts_count.adjustSize()
self.label_starts_count.show()
self.label_contains_count.setText("...")
self.label_ends_count.setText("...")
print("End blocks")发布于 2021-10-17 11:45:58
我真的不能从你的代码片段中理解很多东西,看看这里关于如何在上面发布问题:
How do I ask a good question? 和所包含的代码恰好足以让其他人重现该问题。要获得这方面的帮助,请阅读How to create a Minimal, Complete, and Verifiable example.
我试着重现你的问题,看一下我的代码,看看它的行为是否和你的一样(错误与否)。让我知道吧,我也在努力学习
from PyQt5 import QtWidgets, QtCore
# from PyQt5 import QtCore, QtGui
import sys
class Window(QtWidgets.QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQt5 QMainWindow ")
self.setGeometry(100, 100, 500, 400)
self.setStyleSheet("""Window {background : blue}""")
self.lineEdit = QtWidgets.QLineEdit(self)
self.lineEdit.setGeometry(QtCore.QRect(140, 60, 181, 71))
self.lineEdit.setObjectName("lineEdit")
self.lineEdit.setPlaceholderText(" Enter your text")
self.label = QtWidgets.QLabel(self)
self.label.setGeometry(QtCore.QRect(200, 200, 111, 41))
self.label.setObjectName("label")
self.label.setText('label')
self.lineEdit.textChanged.connect(self.text_changed)
self.lineEdit.editingFinished.connect(self.enterPress)
self.pb = QtWidgets.QPushButton(self)
self.pb.setObjectName("connect")
self.pb.setText("RESET")
self.pb.clicked.connect(self.button_click)
self.pb.setGeometry(QtCore.QRect(160, 300, 111, 41))
self.pb.setStyleSheet("background-color : yellow")
# self.pb.setStyleSheet("background-color : yellow")
self.pb.setStyleSheet("""
QPushButton {
background-color: yellow;
border: 2px solid black;
}
QPushButton:hover {
background-color: green;
}
""")
self.cnt = 0
self.reset = False
def text_changed(self, text):
self.cnt = len(self.lineEdit.text())
if len(self.lineEdit.text()) >= 1:
print("Text changed...", self.cnt)
print('...')
self.cnt += 1
else:
if self.reset == True:
self.reset = False
self.label.setText("label")
self.setStyleSheet("""Window {background : blue}""")
else:
self.lineEdit.setText('cleared text')
self.label.setText("9999")
self.setStyleSheet("""Window {background : red}""")
def enterPress(self):
print("Text is now ...")
self.text= self.lineEdit.text()
print(' --> ', self.text)
# print(len(self.lineEdit.text()))
def button_click(self):
self.reset = True
self.lineEdit.setText(None)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())在我的代码中,QLineEdit开始时是空的,您可以在它到达len == 0时写入,它下面的标签会更改文本
https://stackoverflow.com/questions/67941012
复制相似问题