如何使单个PyQt代码在Windows和Linux中运行?

时间:2010-02-23 16:17:25

标签: pyqt

PyQt专家:我在Windows中开发了GUI,并使用setGeometry来定位小部件。当我试图在Linux中运行相同的代码时,它看起来很混乱。

并在Windows中添加了字体大小为8似乎很好。但是在Linux中,特别是在Ubuntu中,由于默认情况下字体大小为10,因此它看起来不太好。其中一些差异是组框的边框在Linux中不显示,而在Windows中可见。

有没有一种方法可以使用相同的代码在Windows和Linux中获得相同的外观和感觉,而不管字体和大小的变化以及其他差异?

将来,如果我将我的应用程序移植到Mac,那么相同的代码也会在那里工作吗?或者我是否应该通过检查platform.system()等于“windows”或“linux”来为每个代码维护单独的代码?

2 个答案:

答案 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.

虽然我希望我的回答很有用,但这可能意味着您的程序需要部分重写。但是,从长远来看,这意味着您将拥有可在样式和操作系统之间移植的代码,甚至可以翻译(假设您关心它)。