1
QWebView
(python 3.3 + pydide 1.1.2 + Qt 4.8)을 FileViewer로 사용합니다. 그림, 텍스트, HTML, ... 모두 괜찮지 만 PDF에 디스플레이 문제가 있습니다. 나는 두 가지 방법을 시험했다.QWebView가 포함 된 PDF :로드 후 새로 고침/다시 그리기가 없음
- 내부 PDF 뷰어 : 화면이 비어 사용이로드
webview.load(file)
하지만 후, 다른 파일을로드 한 후, 모두가 잘 작동 그것은 파일 - pdf.js 보여줍니다 filebase에 사용
setContent()
후를, 그것 흰색 페이지와 로딩 서클 webviewer.html/.js를로드합니다. 화면은 내가 폼의 크기를 조정하면 새로 고치거나 스크롤 막대를 사용하지만, 이 모든 괜찮
나는 "완성 된 자바 스크립트 로딩 플러그인 /"에 대한 이벤트를 찾을 수 없습니다, 그래서 다시 그리기를 강제 할 수 또는 그래서. 케이스 1 여기서 예 번호 :
import sys
from PySide import QtCore, QtGui, QtWebKit #@UnusedWildImport
class DialogTest(QtGui.QDialog):
def __init__(self, parent = None):
super(DialogTest, self).__init__(parent)
self.resize(620, 600)
self.setAttribute(QtCore.Qt.WA_DeleteOnClose)
self.PreviewBox = QtWebKit.QWebView()
self.PreviewBox.settings().setAttribute(QtWebKit.QWebSettings.PluginsEnabled, True)
self.PreviewBox.settings().setAttribute(QtWebKit.QWebSettings.WebAttribute.DeveloperExtrasEnabled, True)
self.PreviewBox.settings().setAttribute(QtWebKit.QWebSettings.PrivateBrowsingEnabled, True)
self.PreviewBox.settings().setAttribute(QtWebKit.QWebSettings.LocalContentCanAccessRemoteUrls, True)
self.PreviewBox.loadFinished.connect(self._loadfinished)
self.button_test1 = QtGui.QPushButton("File 1")
self.button_test1.clicked.connect(self._onselect1)
self.button_test2 = QtGui.QPushButton("File 2")
self.button_test2.clicked.connect(self._onselect2)
layout_Buttons = QtGui.QHBoxLayout()
layout_Buttons.addWidget(self.button_test1)
#layout_Buttons.addStretch()
layout_Buttons.addWidget(self.button_test2)
layout_Main = QtGui.QVBoxLayout()
layout_Main.addLayout(layout_Buttons)
layout_Main.addWidget(self.PreviewBox)
self.setLayout(layout_Main)
def Execute(self):
self.show()
self.exec_()
def _onselect1(self):
self.PreviewBox.load(QtCore.QUrl().fromLocalFile("c:\\tmp\\test1.pdf"))
def _onselect2(self):
self.PreviewBox.load(QtCore.QUrl().fromLocalFile("c:\\tmp\\test2.pdf"))
def _loadfinished(self, ok):
#self.PreviewBox.repaint()
pass
app = QtGui.QApplication(sys.argv)
DialogTest().Execute()
편집 : 해결 케이스 1 (웹킷 플러그인) 그 자체에 집중 걸리므 용액 한테 허용되지 않는, otherbug있다. 나는 다시 pdf.js와 함께 연주하고 workaroud을 발견 :
self.PreviewBox.setHtml(content, baseUrl = QtCore.QUrl().fromLocalFile(path))
self.PreviewBox.hide()
QtCore.QTimer.singleShot(700, self.PreviewBox.show)
컨텐츠 작성 및 타이머가 너무 낮게하지 않은 후 hide()
가 있어야합니다.
// 제이