首页 > 解决方案 > PyQt5 自动调整 tkinter 窗口的大小

问题描述

我正在尝试在窗口中PyQt5按下按钮后使用打开网页。tkinter

新窗口打开后,它会tkinter永久调整(在这种情况下缩小)窗口的大小。

重现此代码所需的最少代码

import sys
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import *
from PyQt5.QtWidgets import QApplication
from tkinter import *
from threading import Thread

class Web:
    def __init__(self,url,title='',size=False):
        self.title=title
        self.url=url
        self.size=size

        self.app=QApplication(sys.argv)
        self.web=QWebEngineView()
        self.web.setWindowTitle(self.title)
        self.web.load(QUrl(self.url))
        if size:
            self.web.resize(self.size[0],self.size[1])
    
    def open(self):
        self.web.show()
        sys.exit(self.app.exec_())

def launch():
    web=Web('https://www.example.com')
    web.open()

root=Tk()

button=Button(root,text='open',command=lambda:Thread(target=launch).start())
button.pack(padx=100,pady=100)

root.mainloop()

图片供参考

两个图像具有相同的高度。

在此处输入图像描述 在此处输入图像描述

我想知道原因和防止这种情况的方法。

标签: pythontkinterpyqt5

解决方案


我自己已经弄清楚了。PyQt更改默认情况下不会发生的 dpi 感知tkinter。因此,tkinter一旦PyQt在同一个主循环中启动,窗口就会自行调整大小。

由于我在 Windows 机器上,使用它解决了这个问题。

ctypes.windll.shcore.SetProcessDpiAwareness(1)

推荐阅读