python - 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()
图片供参考
两个图像具有相同的高度。
我想知道原因和防止这种情况的方法。
解决方案
我自己已经弄清楚了。PyQt
更改默认情况下不会发生的 dpi 感知tkinter
。因此,tkinter
一旦PyQt
在同一个主循环中启动,窗口就会自行调整大小。
由于我在 Windows 机器上,使用它解决了这个问题。
ctypes.windll.shcore.SetProcessDpiAwareness(1)
推荐阅读
- javascript - 如何将值从一个网页传递到另一个网页
- typescript - Is it possible to infer a type for a tuple, where element's type depends on the previous?
- javascript - How can I loop through multiple instances of a JS component
- java - Gradle/Maven deploy to github packages - Preserving parameter/argument names
- android - How to find images on Android device using Android File Explorer?
- c++ - How do I determine the default thread count OpenMP uses for a parallel section?
- tcp - ProgMP page showing I'm not using MPTCP even when I'm using it
- polymorphism - 指定 Julia 函数只能采用其内容为特定类型的字典/数组的正确方法是什么?
- ios - SwiftUI/Combine no updates to @ObservedObject from @Published
- oracle - How to retain double quotes in a column while loading a file using SQL Loader