来源
GitHub - openslide/openslide-python: Python bindings to OpenSlide
OpenSlide Python是OpenSlide库的Python接口。
OpenSlide是一个C库,提供了一个简单的阅读界面 全幻灯片图像,也称为虚拟幻灯片,具有高分辨率 数字病理学中使用的图像。这些图像可以占用数十千兆字节 未压缩时,因此无法使用标准工具轻松读取或 库,专为可以舒适地 未压缩到RAM中。整张幻灯片图像通常是多分辨率的; OpenSlide允许以分辨率读取少量图像数据 最接近所需的缩放级别。
在安装之后 我们可以发现给出的demo最终运行都需要在浏览器访问服务器并最终显示,又因为工作需要将他放在一个窗口内,于是进行验证性测试。把deepzoom_multiserver.py封装。将 test.py
中的 Flask 应用程序嵌入到 PyQt5 窗口中显示。
我因为测试需要将deepzoom_multiserver.py复制为test.py。同时,在同级目录下创建app.py,具体内容如下:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtCore import QUrl
from threading import Thread
from test import create_app
"""
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget:
从PyQt5 库中导入所需的类,包括用于创建应用程序、主窗口、布局和部件的类。
from PyQt5.QtWebEngineWidgets import QWebEngineView
PyQt5 库中导入用于显示 Web 内容的部件类。
from PyQt5.QtCore import QUrl:
从 PyQt5 库中导入用于处理 URL 的类。
from threading import Thread:
从 Python 标准库中的 threading 模块导入 Thread 类,用于在单独的线程中运行 Flask 应用程序。
from test import create_app:
从 test.py 文件中导入 create_app 函数,该函数用于创建 Flask 应用程序。
"""
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Flask Web App")
self.setGeometry(100, 100, 800, 600)
layout = QVBoxLayout()
# 显示web内容
self.web_view = QWebEngineView()
layout.addWidget(self.web_view)
central_widget = QWidget()
central_widget.setLayout(layout)
self.setCentralWidget(central_widget)
flask_thread = Thread(target=self.start_flask)
flask_thread.start()
def start_flask(self):
app = create_app()
app.run(host='127.0.0.1', port=5000)
if __name__ == '__main__':
app = QApplication(sys.argv)
window = MainWindow()
window.web_view.load(QUrl("http://127.0.0.1:5000")) # 加载 Flask 应用程序的页面
window.show()
sys.exit(app.exec_())
最终结果如下所示:
测试发现还是有一些小的问题,比如无法回退到上一文件夹等等,但是都是一些小问题了,现在的目的还是验证性实验。
参考资料:GitHub - openslide/openslide-python: Python bindings to OpenSlide