检测操作系统的PyQt API

2 投票
3 回答
1187 浏览
提问于 2025-04-16 18:33

我正在把一些代码从C++/Qt移植到Python/PyQt。

我该怎么处理

#ifdef Q_OS_WIN
    ...
#else

有没有PyQt可以替代Qt中的宏Q_OS_WIN?

3 个回答

0

要检查当前的操作系统是不是Mac电脑

import PyQt4.QtGui
MAC = hasattr(PyQt4.QtGui, "qt_mac_set_native_menubar")

要检查当前的操作系统是不是Linux/X11、BSD或者Solaris

import PyQt4.QtGui
X11 = hasattr(PyQt4.QtGui, "qt_x11_wait_for_window_manager")

这段内容来自Mark Summerfield的书

我不知道具体怎么检查Windows,但如果上面两个测试都返回了None,那很可能这个系统就是Windows。

0

跟C++不一样,Python没有预处理器。这意味着你不能完全把某些代码块隐藏起来,让编译器或解释器看不见。

不过对于大多数实际情况来说,把相关的代码块放在一个Python的if语句里面就足够了。

可以看看这个链接:Python: 我在运行哪个操作系统?

5

你为什么会想要这样做,而不是直接使用Python的 sys.platform 这个来自sys模块的功能呢?

import sys
if sys.platform == 'win32':
    print("win")
else:
    print("winner!")

我得提一下,不管你是在x64的Python上运行,win32都是一样的。

撰写回答