我准备了这个例子:
import sys
from PyQt5.QtWidgets import (QApplication, QMainWindow)
from PyQt5 import uic
from PyQt5.QAxContainer import QAxWidget
class MainForm(QMainWindow):
def __init__(self, parent=None):
super(MainForm, self).__init__(parent)
uic.loadUi(r"scroll_bar_test.ui", self)
self.axWidget = QAxWidget('Microsoft Web Browser')
path = 'C:/Users/Egon/Documents/FotoViewer/scroll_bar_test.docx'
self.axWidget.setControl(path)
self.setCentralWidget(self.axWidget)
def main():
app = QApplication(sys.argv)
form = MainForm()
form.show()
app.exec_()
if __name__ == '__main__':
main()
如果您启动程序,它将显示一个 word 文档,但左侧是隐藏的:
从那里开始,它居中很好。我的问题是如何在开头居中显示 word 文档?
使用 QTimer.singleShot(2000, self.axWidget.updateGeometry) 后
同时我发现这些行以文档为中心:
self.setCentralWidget(self.axWidget)
QTimer.singleShot(5, lambda: self.axWidget.setControl(path))
QTimer.singleShot(5, self.axWidget.updateGeometry)
Qtimer 的时间在两个镜头中必须相同。两者都必须用计时器完成,否则它不起作用。不幸的是,用户首先看到的是一个非常窄的文档,例如最后一张照片,然后是一个闪光灯,然后是正确呈现的文档。另外这不会发生在其他计算机上。我和其他 3 人一起尝试过,他们没有这个问题。