sách gpt4 ai đã đi

python - PyQt5 - 如何向 QMessageBox 添加滚动条

In lại 作者:行者123 更新时间:2023-12-01 18:05:04 25 4
mua khóa gpt4 Nike

我有一个根据用户输入生成的列表。

我正在尝试在 QMessageBox 中显示此列表。但是,我无法知道这个列表的长度。这个 list 可能很长。

因此,我需要向 QMessageBox 添加滚动条。

有趣的是,我到处寻找,但没有找到任何解决方案。

下面是我希望成为一个“最小、完整且可验证的示例”,当然没有用户输入;我刚刚创建了一个列表作为示例。

我很感激任何建议。

nhập khẩu hệ thống
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class W(QWidget):

định nghĩa __init__(bản thân):
super().__init__()

self.initUi()

def initUi(self):
self.btn = QPushButton('Show Message', self)
self.btn.setGeometry(10, 10, 100, 100)
self.btn.clicked.connect(self.buttonClicked)
self.lst = list(range(2000))
self.show()


def buttonClicked(self):
result = QMessageBox(self)
result.setText('%s' % self.lst)
result.exec_()

if __name__ == "__main__":
app = QApplication(sys.argv)
gui = W()
sys.exit(app.exec_())

1 Câu trả lời

您不能直接添加滚动条,因为负责显示文本的小部件是QLabel。解决方案是添加一个QScrollArea。大小可能不够,因此必须使用样式表来设置最小值。

class ScrollMessageBox(QMessageBox):
def __init__(self, l, *args, **kwargs):
QMessageBox.__init__(self, *args, **kwargs)
scroll = QScrollArea(self)
scroll.setWidgetResizable(True)
self.content = QWidget()
scroll.setWidget(self.content)
lay = QVBoxLayout(self.content)
for item in l:
lay.addWidget(QLabel(item, self))
self.layout().addWidget(scroll, 0, 0, 1, self.layout().columnCount())
self.setStyleSheet("QScrollArea{min-width:300 px; min-height: 400px}")

class W(QWidget):
định nghĩa __init__(bản thân):
super().__init__()
self.btn = QPushButton('Show Message', self)
self.btn.setGeometry(10, 10, 100, 100)
self.btn.clicked.connect(self.buttonClicked)
self.lst = [str(i) for i in range(2000)]
self.show()


def buttonClicked(self):
result = ScrollMessageBox(self.lst, None)
result.exec_()

if __name__ == "__main__":
app = QApplication(sys.argv)
gui = W()
sys.exit(app.exec_())

Đầu ra:

nhập mô tả hình ảnh ở đây

关于python - PyQt5 - 如何向 QMessageBox 添加滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47345776/

25 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com