[PyQt5 vs PyQt6 Widget Resize not suit]
Yakuho opened this issue · 9 comments
Yakuho commented
Environment :
- OS: [e.g. Win 10]
- Python [e.g. 3.7 X64 anaconda on win32]
- PyQt5/6 [e.g. 5.10.1]
Describe :
我在使用 PyQt5的时候,创建了一个Widget窗体并设置尺寸为100100, 运行并显示出来的尺寸(用截图工具截出来)也是100100;
在PyQt6中,使用同样的代码, 运行并显示出来的尺寸(用截图工具截出来)变成了125*125;
这是为什么呢???
Code :
try:
from PyQt6.QtWidgets import QApplication
from PyQt6 import QtWidgets
from PyQt6 import QtCore
except ImportError:
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtWidgets
from PyQt5 import QtCore
import sys
app = QApplication(sys.argv)
window = QtWidgets.QWidget()
# use pyqt5 Widget size by win screen is 100 * 100
# use pyqt6 Widget size by win screen is 125 * 125
window.resize(100, 100)
window.setMinimumSize(100, 100)
window.setMaximumSize(100, 100)
print("width", window.width(), "height", window.height())
window.show()
sys.exit(app.exec())892768447 commented
可能是由于Qt6 底层做了一些限制导致的和Qt5存在差异
892768447 commented
Yakuho commented
源码上是一致的,但是确实尺寸是不一样的...您这边能复现吗,我不确定是不是我机器的问题
892768447 commented
源码上是一致的,但是确实尺寸是不一样的...您这边能复现吗,我不确定是不是我机器的问题
能复现。但目前底层这样差异。上层不好做修复。
你可以试一下 设置 500500 是不是还是一样的问题。
我猜测是100100 太小了。毕竟windows窗口上面的三个按钮加图标 就超过100了
Yakuho commented
我试过了,程序本来的尺寸是(500+, 400+),设置成100是为了观察差异,发现差异在1.25倍,PyQt6总比PyQt5大1.25倍. 肯定是有什么东西引起的
Yakuho commented
已经解决了,感谢您的解答。
我是从 Qt 文档和搜索引擎整合出来的答案:
try:
from PyQt6.QtWidgets import QApplication
from PyQt6 import QtWidgets, QtCore
except ImportError:
from PyQt5.QtWidgets import QApplication
from PyQt5 import QtWidgets, QtCore
print("import PyQt", QtCore.QT_VERSION_STR)
import sys
if QtCore.QT_VERSION_STR[0] == "5":
QApplication.setAttribute(QtCore.Qt.AA_EnableHighDpiScaling)
else:
QApplication.setHighDpiScaleFactorRoundingPolicy(QtCore.Qt.HighDpiScaleFactorRoundingPolicy.Floor)
app = QApplication(sys.argv)
window = QtWidgets.QWidget()
# use pyqt5 win10 window size is 100 * 100
# use pyqt6 win10 window size is 125 * 125
window.resize(100, 100)
window.setMinimumSize(100, 100)
window.setMaximumSize(100, 100)
print("width", window.width(), "height", window.height())
window.show()
sys.exit(app.exec())892768447 commented
你看下你系统的分辨率是多少。以及缩放比例
892768447 commented
ok。那应该就是Qt6 对缩放比例做了改动。导致的。
Yakuho commented
win10 推荐缩放比例以及我在使用的缩放比例是 125%,与上面提到的 1.25 倍有着微妙关系,因此我就根据关键字查找相关文档