Евгений Asked:2021-12-01 17:17:43 +0000 UTC2021-12-01 17:17:43 +0000 UTC 2021-12-01 17:17:43 +0000 UTC 在 QListWidget 小部件中放置按钮 772 告诉我,PyQt5中可以显示按钮的小部件是什么? 例如:按下“hello”按钮QListWidget时,在某个小部件的底部会出现几个可点击的按钮(例如,您可以在其中显示其他小部件)。 您可以在其中放置按钮的小部件是什么? 我找不到合适的例子,QListView在QListWidget互联网上放置按钮,只有在小部件中放置文本。 但是按钮呢? 这是手动完成的: python 2 个回答 Voted Best Answer S. Nick 2021-12-01T18:31:23Z2021-12-01T18:31:23Z 我真的希望下一次,您将提供一个最小可重现的示例。 试试这样: from PyQt5 import QtWidgets, QtCore, QtGui class Input_Box(QtWidgets.QDialog): def __init__(self,parent= None): super(Input_Box, self).__init__(parent) open_message = QtWidgets.QLabel("Enter Value:") self.txt = QtWidgets.QLineEdit() save = QtWidgets.QPushButton('Save', clicked=self.accept) cancel = QtWidgets.QPushButton('Cancel', clicked=self.reject) grid = QtWidgets.QGridLayout(self) grid.setSpacing(10) grid.addWidget(open_message, 0, 0) grid.addWidget(self.txt, 1, 0, 1, 2) grid.addWidget(save, 2, 0) grid.addWidget(cancel, 2, 1) self.setFixedSize(self.sizeHint()) def save(self): value = self.txt.text() return value class Window(QtWidgets.QWidget): def __init__(self): super().__init__() label = QtWidgets.QLabel("Hello World") self.listWidget = QtWidgets.QListWidget() addButton = QtWidgets.QPushButton('Add', clicked=self.add_button) grid = QtWidgets.QGridLayout(self) grid.setSpacing(10) grid.addWidget(label) grid.addWidget(self.listWidget) grid.addWidget(addButton) def add_button(self): input_box = Input_Box() input_box.setWindowTitle("Window 2") if input_box.exec_() == QtWidgets.QDialog.Accepted: val = input_box.save() newButton = QtWidgets.QPushButton(f'{val}') newButton.clicked.connect(lambda btn, text=val: self.onClicked(text)) listWidgetItem = QtWidgets.QListWidgetItem() listWidgetItem.setSizeHint(newButton.sizeHint()) self.listWidget.addItem(listWidgetItem) self.listWidget.setItemWidget(listWidgetItem, newButton) self.listWidget.scrollToItem(listWidgetItem) def onClicked(self, text): print(text) if __name__ == "__main__": import sys app = QtWidgets.QApplication(sys.argv) w = Window() w.show() sys.exit(app.exec_()) gil9red 2021-12-01T18:44:51Z2021-12-01T18:44:51Z 单击按钮时在布局上放置按钮的简单示例Hello 尝试: from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QFrame, QPushButton class MainWindow(QWidget): def __init__(self): super().__init__() self.button_hello = QPushButton('Hello') self.button_hello.clicked.connect(self.add_button) self.layout_buttons = QVBoxLayout() self.layout_buttons.addStretch() # Это добавит пружину, прижимающую виджеты вверх self.frame = QFrame() self.frame.setMinimumSize(200, 200) self.frame.setFrameStyle(QFrame.Box) self.frame.setLayout(self.layout_buttons) main_layout = QVBoxLayout() main_layout.addWidget(self.button_hello) main_layout.addWidget(self.frame) self.setLayout(main_layout) def add_button(self): button = QPushButton('Кнопка') self.layout_buttons.insertWidget(0, button) # Добавление в начало, с пружиной это прижмет вверх # self.layout_buttons.addWidget(button) # Добавление в конец, с пружиной это прижмет вниз if __name__ == '__main__': app = QApplication([]) mw = MainWindow() mw.show() app.exec() 截图(点击三下Hello):
我真的希望下一次,您将提供一个最小可重现的示例。
试试这样:
单击按钮时在布局上放置按钮的简单示例Hello
尝试:
截图(点击三下Hello):