- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个根据用户输入生成的列表。
我正在尝试在 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:
关于python - PyQt5 - 如何向 QMessageBox 添加滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47345776/
Tôi đang xử lý một tập hợp gồm 173 nghìn điểm được dán nhãn thành 160 nhóm. Tôi muốn giảm số lượng nhóm/cụm bằng cách sáp nhập những nhóm/cụm gần nhất (còn 9 hoặc 10 nhóm). Tôi đã tìm kiếm sklearn hoặc các thư viện tương tự nhưng không thành công. Tôi đoán nó chỉ là sự nhóm lại thông qua knn
Tôi có một danh sách phẳng các số được nhóm hợp lý thành các nhóm 3, trong đó mỗi bộ ba là (số, __bỏ qua, cờ[0 hoặc 1]), ví dụ: [7,56,1, 8,0,0, 2,0,0, 6,1,
Tôi đang sử dụng pipenv để quản lý các gói của mình. Tôi muốn viết một tập lệnh python để gọi một tập lệnh python khác sử dụng môi trường ảo (VE) khác. Cách chạy một tập lệnh python bằng VE1 và gọi một tập lệnh khác
Giả sử tôi có một tệp script.py nằm ở đường dẫn = "foo/bar/script.py". Tôi đang tìm cách thực thi các tập lệnh trong Python từ Python chính của tôi
Điều này nghe có vẻ giống như một câu đố hay một trò đùa, nhưng thực ra tôi vẫn chưa tìm ra câu trả lời cho câu hỏi này. Vấn đề thực sự là gì? Tôi muốn chạy 2 tập lệnh. Trong tập lệnh đầu tiên, tôi gọi tập lệnh kia, nhưng tôi muốn chúng tiếp tục song song, chứ không phải thành hai luồng riêng biệt. Chủ yếu là tôi không muốn
Tôi có một phần mềm sử dụng python 2.5.5. Tôi muốn gửi lệnh để bắt đầu một tập lệnh trong python 2.7.5 và sau đó tiếp tục thực thi tập lệnh đó. Tôi đã thử sử dụng #!python2.7.5 và http://re
Tôi đang ở dòng lệnh python (sử dụng python 2.7) và đang cố gắng chạy một tập lệnh Python. Hệ điều hành của tôi là Windows 7. Tôi đã thiết lập thư mục của mình thành thư mục chứa tất cả các tập lệnh của tôi bằng cách sử dụng: os.chdir("
Spoiler: Đã giải quyết một phần (xem phần cuối). Sau đây là một ví dụ mã sử dụng nhúng Python: #include int main(int argc, char** argv) { Py_SetPythonHome
Giả sử tôi có danh sách sau, tương ứng với giá cổ phiếu theo thời gian thực: giá = [1, 3, 7, 10, 9, 8, 5, 3, 6, 8, 12, 9, 6, 10, 13, 8, 4, 11] Tôi muốn xác định giá trị tốt nhất tổng thể sau đây
Vì vậy, tôi đang cố gắng thay đổi hình nền của khung này khi một nút radio nào đó được chọn. Khung của tôi nằm bên trong một lớp và chức năng của các nút radio nằm bên ngoài lớp đó. (Để tôi có thể gọi chúng trên tất cả các khung khác.) Vấn đề là bất cứ khi nào tôi chọn một nút radio, tôi nhận được lỗi sau:
Tôi đang cố gắng so sánh một chuỗi với một biểu thức chính quy trong python như sau, #!/usr/bin/env python3 import re str1 = "Expecting property name
Hãy xem xét mô-đun Boost.Python nguyên mẫu sau đây nhập lớp "D" từ một tệp tiêu đề C++ riêng biệt. /* tập tin: a/b.cpp */ BOOST_PYTHON_MODULE(c)
Làm thế nào để viết một chương trình để "xác định số dòng của lệnh gọi hàm?" Mô-đun kiểm tra của Python cung cấp tùy chọn để xác định vị trí số dòng, tuy nhiên, def di(): return inspect.currentframe().f_back.f_l
Tôi đã cài đặt Python 2.7 bằng macports và do biến $PATH của tôi nên đây là những gì tôi nhận được khi nhập $ python. Tuy nhiên, virtualenv sử dụng Python 2.6 theo mặc định, ngoại trừ
Tôi chỉ muốn hỏi làm thế nào để tăng tốc độ tìm kiếm trên python. Tôi có một chuỗi ký tự rất dài, dài 176861 (tức là các ký tự chữ và số có một số ký hiệu) mà tôi đã thử nghiệm cho mục đích nghiên cứu bằng cách sử dụng hàm này: def getExe
list1 = [u'%app%%General%%%Council%', u'%people%', u'%people%%Regional%%%Council%%Mandate%', u'%ppp%%Ge
Câu hỏi này đã có câu trả lời tại đây: Có phải Pythonic sử dụng danh sách hiểu biết chỉ cho các tác dụng phụ không? (7 câu trả lời) Đã đóng 4 tháng trước. kể
Tôi muốn kết hợp hai danh sách thành một danh sách trong Python như sau: a = [1,1,1,2,2,2,3,3,3,3] b = ["Sun", "is", "bright", "June","and" ,"Ju
Tôi đang chạy Mac OS X 10.8.4 (Darwin 12.4.0) với bản phân phối Boost mới nhất (1.55.0). Tôi đang làm theo hướng dẫn ở đây để xây dựng hướng dẫn Boost-Pyth có trong bản phân phối của tôi
Tôi đang học Python và đang cố gắng tạo một trình thu thập dữ liệu web mà không cần bất kỳ thư viện của bên thứ 3 nào nên quy trình không được đơn giản hóa đối với tôi và tôi biết mình đang làm gì. Tôi đã tìm kiếm một số tài liệu trực tuyến nhưng tất cả đều khiến tôi bối rối về một điều gì đó. html trông giống như
Tôi là một lập trình viên xuất sắc, rất giỏi!