PyQt专家:我在Windows中开发了GUI,并使用setGeometry
来定位小部件。当我试图在Linux中运行相同的代码时,它看起来很混乱。
并在Windows中添加了字体大小为8似乎很好。但是在Linux中,特别是在Ubuntu中,由于默认情况下字体大小为10,因此它看起来不太好。其中一些差异是组框的边框在Linux中不显示,而在Windows中可见。
有没有一种方法可以使用相同的代码在Windows和Linux中获得相同的外观和感觉,而不管字体和大小的变化以及其他差异?
将来,如果我将我的应用程序移植到Mac,那么相同的代码也会在那里工作吗?或者我是否应该通过检查platform.system()
等于“windows”或“linux”来为每个代码维护单独的代码?
答案 0 :(得分:2)
答案很简单:不要直接使用setGeometry(定位小部件)。
请考虑以下内容:如果用户想要调整应用程序窗口的大小,该怎么办?
在QSplitters中编写用户界面(您可以从Designer或代码执行此操作)(如果您需要两个组件之间的调整大小句柄)和/或QVBoxLayouts / QHBoxLayouts(请注意这些可以嵌套)。
这将使您的UI组件表现一致。
答案 1 :(得分:1)
我同意@ChristopheD。使用setGeometry很糟糕。这就像设计一个固定像素几何的网页,然后想知道为什么它在另一台设备上看起来很糟糕。
Qt有很多精彩的布局代码。让它做它的工作。
默认情况下,Qt会根据QStyle中包含的说明绘制一个小部件。你可以很容易地测试你在不同风格中打破你的布局有多糟糕...用不同的风格选项运行你的程序。像这样:
program.py风格的主题
同时尝试-style platinum
或-style windows
。即使不同版本的Windows也可能会破坏您的布局。
如果您真的想看看基于像素的布局有多糟糕,请尝试使用-reverse参数运行您的程序...这就是您的程序看起来像是运行它的人,他说的是从右到左的语言,比如希伯来语或波斯语。
通过为窗口小部件创建自定义绘制代码,可以解决窗口小部件未绘制到您希望的位置的问题。请参阅PyQt QPainter docs或更好的原始Qt QPainter docs.。
虽然我希望我的回答很有用,但这可能意味着您的程序需要部分重写。但是,从长远来看,这意味着您将拥有可在样式和操作系统之间移植的代码,甚至可以翻译(假设您关心它)。