如何删除迭代创建的 QLabel?
How do I remove QLabels created iteratively?
我正在制作一个应用程序,我正在迭代创建 QLabel
。我正在尝试使用另一个按钮删除它们。
我想删除 'history'。我已经尝试过不同的东西,比如 label.remove()
等等,但是在这里添加我以前的尝试没有任何价值(而且我的尝试不在 this 可重现的例子中)。
这是我的代码:
from PyQt5.QtWidgets import *
import sys
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.left = 10
self.top = 10
self.width = 400
self.height = 75
self.initUI()
self.layout = QVBoxLayout()
self.line = QLineEdit()
label = QLabel('Enter a WORD:')
run_button = QPushButton('Run')
reset_button = QPushButton('Reset History')
self.layout.addWidget(label)
self.layout.addWidget(self.line)
self.layout.addWidget(run_button)
self.layout.addWidget(reset_button)
widget = QWidget()
widget.setLayout(self.layout)
run_button.clicked.connect(self.on_click)
self.setCentralWidget(widget)
def initUI(self):
self.setGeometry(self.left, self.top, self.width, self.height)
def on_click(self):
response = QLabel(self.line.text())
self.layout.addWidget(response)
self.line.selectAll()
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
您必须存储 QLabel,以便稍后将它们从布局中删除并删除,然后另外重新计算 window 的大小:
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.left = 10
self.top = 10
self.width = 400
self.height = 75
self.initUI()
self.layout = QVBoxLayout()
self.line = QLineEdit()
label = QLabel("Enter a WORD:")
run_button = QPushButton("Run")
reset_button = QPushButton("Reset History")
self.layout.addWidget(label)
self.layout.addWidget(self.line)
self.layout.addWidget(run_button)
self.layout.addWidget(reset_button)
widget = QWidget()
widget.setLayout(self.layout)
run_button.clicked.connect(self.add_history)
reset_button.clicked.connect(self.delete_history)
self.setCentralWidget(widget)
self._history_labels = []
def initUI(self):
self.setGeometry(self.left, self.top, self.width, self.height)
def add_history(self):
history = QLabel(self.line.text())
self.layout.addWidget(history)
self.line.selectAll()
self._history_labels.append(history)
def delete_history(self):
for history in self._history_labels:
self.layout.removeWidget(history)
history.deleteLater()
self._history_labels = []
width = self.size().width()
self.adjustSize()
height = self.sizeHint().height()
QTimer.singleShot(0, lambda: self.resize(width, height))
对我来说,使用一个标签来存储您的所有回复会更容易。每次点击“运行”按钮时,在标签中添加一个新行。用 # <---
突出显示的更改行
from PyQt5.QtWidgets import *
import sys
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.left = 10
self.top = 10
self.width = 400
self.height = 75
self.initUI()
self.layout = QVBoxLayout()
self.line = QLineEdit()
label = QLabel('Enter a WORD:')
run_button = QPushButton('Run')
reset_button = QPushButton('Reset History')
self.label = QLabel() # <-----
self.layout.addWidget(label)
self.layout.addWidget(self.line)
self.layout.addWidget(run_button)
self.layout.addWidget(reset_button)
self.layout.addWidget(self.label) # <-----
widget = QWidget()
widget.setLayout(self.layout)
run_button.clicked.connect(self.on_click)
reset_button.clicked.connect(self.reset_click) # <-----
self.setCentralWidget(widget)
def initUI(self):
self.setGeometry(self.left, self.top, self.width, self.height)
def on_click(self):
self.label.setText(self.label.text() + '\n' + self.line.text()) # <-----
self.line.selectAll()
def reset_click(self): # <-----
self.label.setText('') # <-----
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
self.layout = QVBoxLayout()
self.line = QLineEdit()
label = QLabel('Enter a WORD:')
run_button = QPushButton('Run')
reset_button = QPushButton('Reset History')
self.label = QLabel() # <-----
self.layout.addWidget(label)
self.layout.addWidget(self.line)
self.layout.addWidget(run_button)
self.layout.addWidget(reset_button)
self.layout.addWidget(self.label) # <-----
widget = QWidget()
widget.setLayout(self.layout)
run_button.clicked.connect(self.on_click)
reset_button.clicked.connect(self.reset_click) # <-----
self.setCentralWidget(widget)
def initUI(self):
self.setGeometry(self.left, self.top, self.width, self.height)
def on_click(self):
self.label.setText(self.label.text() + '\n' + self.line.text()) # <-----
self.line.selectAll()
def reset_click(self): # <-----
self.label.setText('') # <-----
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
我正在制作一个应用程序,我正在迭代创建 QLabel
。我正在尝试使用另一个按钮删除它们。
我想删除 'history'。我已经尝试过不同的东西,比如 label.remove()
等等,但是在这里添加我以前的尝试没有任何价值(而且我的尝试不在 this 可重现的例子中)。
这是我的代码:
from PyQt5.QtWidgets import *
import sys
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.left = 10
self.top = 10
self.width = 400
self.height = 75
self.initUI()
self.layout = QVBoxLayout()
self.line = QLineEdit()
label = QLabel('Enter a WORD:')
run_button = QPushButton('Run')
reset_button = QPushButton('Reset History')
self.layout.addWidget(label)
self.layout.addWidget(self.line)
self.layout.addWidget(run_button)
self.layout.addWidget(reset_button)
widget = QWidget()
widget.setLayout(self.layout)
run_button.clicked.connect(self.on_click)
self.setCentralWidget(widget)
def initUI(self):
self.setGeometry(self.left, self.top, self.width, self.height)
def on_click(self):
response = QLabel(self.line.text())
self.layout.addWidget(response)
self.line.selectAll()
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
您必须存储 QLabel,以便稍后将它们从布局中删除并删除,然后另外重新计算 window 的大小:
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.left = 10
self.top = 10
self.width = 400
self.height = 75
self.initUI()
self.layout = QVBoxLayout()
self.line = QLineEdit()
label = QLabel("Enter a WORD:")
run_button = QPushButton("Run")
reset_button = QPushButton("Reset History")
self.layout.addWidget(label)
self.layout.addWidget(self.line)
self.layout.addWidget(run_button)
self.layout.addWidget(reset_button)
widget = QWidget()
widget.setLayout(self.layout)
run_button.clicked.connect(self.add_history)
reset_button.clicked.connect(self.delete_history)
self.setCentralWidget(widget)
self._history_labels = []
def initUI(self):
self.setGeometry(self.left, self.top, self.width, self.height)
def add_history(self):
history = QLabel(self.line.text())
self.layout.addWidget(history)
self.line.selectAll()
self._history_labels.append(history)
def delete_history(self):
for history in self._history_labels:
self.layout.removeWidget(history)
history.deleteLater()
self._history_labels = []
width = self.size().width()
self.adjustSize()
height = self.sizeHint().height()
QTimer.singleShot(0, lambda: self.resize(width, height))
对我来说,使用一个标签来存储您的所有回复会更容易。每次点击“运行”按钮时,在标签中添加一个新行。用 # <---
from PyQt5.QtWidgets import *
import sys
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super(MainWindow, self).__init__(*args, **kwargs)
self.left = 10
self.top = 10
self.width = 400
self.height = 75
self.initUI()
self.layout = QVBoxLayout()
self.line = QLineEdit()
label = QLabel('Enter a WORD:')
run_button = QPushButton('Run')
reset_button = QPushButton('Reset History')
self.label = QLabel() # <-----
self.layout.addWidget(label)
self.layout.addWidget(self.line)
self.layout.addWidget(run_button)
self.layout.addWidget(reset_button)
self.layout.addWidget(self.label) # <-----
widget = QWidget()
widget.setLayout(self.layout)
run_button.clicked.connect(self.on_click)
reset_button.clicked.connect(self.reset_click) # <-----
self.setCentralWidget(widget)
def initUI(self):
self.setGeometry(self.left, self.top, self.width, self.height)
def on_click(self):
self.label.setText(self.label.text() + '\n' + self.line.text()) # <-----
self.line.selectAll()
def reset_click(self): # <-----
self.label.setText('') # <-----
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
self.layout = QVBoxLayout()
self.line = QLineEdit()
label = QLabel('Enter a WORD:')
run_button = QPushButton('Run')
reset_button = QPushButton('Reset History')
self.label = QLabel() # <-----
self.layout.addWidget(label)
self.layout.addWidget(self.line)
self.layout.addWidget(run_button)
self.layout.addWidget(reset_button)
self.layout.addWidget(self.label) # <-----
widget = QWidget()
widget.setLayout(self.layout)
run_button.clicked.connect(self.on_click)
reset_button.clicked.connect(self.reset_click) # <-----
self.setCentralWidget(widget)
def initUI(self):
self.setGeometry(self.left, self.top, self.width, self.height)
def on_click(self):
self.label.setText(self.label.text() + '\n' + self.line.text()) # <-----
self.line.selectAll()
def reset_click(self): # <-----
self.label.setText('') # <-----
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()