区块链技术博客
www.b2bchain.cn

将自定义窗口小部件添加到pyqt5中的QScrollArea不会使滚动条出现 – python程序员分享

D0b2wT.gif

本文介绍了将自定义窗口小部件添加到pyqt5中的QScrollArea不会使滚动条出现 – python程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

下面显示的示例将一个非常简单的自定义pyqt5小部件添加到QScrollArea。当我将自定义窗口小部件“关闭”时,我希望滚动条区域出现。显然不是这样。

#!/usr/bin/python3 from PyQt5.QtWidgets import QMainWindow, QWidget, QApplication, QScrollArea from PyQt5.QtCore import QObject from PyQt5.QtGui import QPainter, QColor, QPen import sys  class ExampleWidget(QWidget):      def __init__(self, parent=None):         super().__init__(parent=parent)      def paintEvent(self, e):         qp = QPainter()         qp.begin(self)         self.drawWidget(qp)         qp.end()      def drawWidget(self, qp):         qp.setPen(QColor(255, 0, 0))         qp.setBrush(QColor(255, 0, 0))         qp.drawRect(0, 0, 100, 100)  class Example(QMainWindow):     def __init__(self):         super().__init__()         self.setGeometry(300, 300, 300, 200)         self.scrollArea = QScrollArea(self)         self.setCentralWidget(self.scrollArea)         self.widget = ExampleWidget(self.scrollArea)         self.widget.setGeometry(250, 150, 100, 100)         self.show()  if __name__ == '__main__':     app = QApplication(sys.argv)     ex = Example()     sys.exit(app.exec_()) 

一旦移动了小部件以使其不再完全可见,如何使滚动条出现?

参考方案

在示例ExampleWidgetQScrollAreaself.widget = ExampleWidget(self.scrollArea)的子代的代码中,这并不意味着该窗口小部件是使用QScrollArea的属性来处理的,QScrollArea具有一个viewport(),即背景小部件,而QScrollArea仅显示其中的一部分。因此,如果希望将小部件放入其中,则必须使用setWidget()方法。另一方面,viewport()具有内容的大小以及如何计算该大小?,默认情况下,它使用小部件的sizeHint(),在您的情况下,它没有它,因此不会显示您的内容想。

import sys from PyQt5 import QtCore, QtGui, QtWidgets   class ExampleWidget(QtWidgets.QWidget):     def paintEvent(self, e):         qp = QtGui.QPainter(self)         self.drawWidget(qp)      def drawWidget(self, qp):         qp.setPen(QtGui.QColor(255, 0, 0))         qp.setBrush(QtGui.QColor(255, 0, 0))         qp.drawRect(0, 0, 100, 100)      def sizeHint(self):         return QtCore.QSize(500, 500)   class Example(QtWidgets.QMainWindow):     def __init__(self):         super().__init__()         self.scrollArea = QtWidgets.QScrollArea()         self.setCentralWidget(self.scrollArea)         self.widget = ExampleWidget()         self.scrollArea.setWidget(self.widget)         self.show()   if __name__ == '__main__':     app = QtWidgets.QApplication(sys.argv)     ex = Example()     sys.exit(app.exec_()) 

将自定义窗口小部件添加到pyqt5中的QScrollArea不会使滚动条出现 - python

Python GPU资源利用 – python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python sqlite3数据库已锁定 – python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python exchangelib在子文件夹中读取邮件 – python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

python-docx应该在空单元格已满时返回空单元格 – python

我试图遍历文档中的所有表并从中提取文本。作为中间步骤,我只是尝试将文本打印到控制台。我在类似的帖子中已经看过scanny提供的其他代码,但是由于某种原因,它并没有提供我正在解析的文档的预期输出可以在https://www.ontario.ca/laws/regulation/140300中找到该文档from docx import Document from…

Python ThreadPoolExecutor抑制异常 – python

from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED def div_zero(x): print('In div_zero') return x / 0 with ThreadPoolExecutor(max_workers=4) as execut…

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 将自定义窗口小部件添加到pyqt5中的QScrollArea不会使滚动条出现 – python程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们