在python

时间:2015-09-28 10:24:28

标签: python linux windows

我正在python 2.7.9中实现消息框。我正在编写应该在Windows和Linux中运行的代码。 下面的代码在windows中运行良好,但在Linux中运行不正确。我知道在Linux中没有windll的模块对象。是否需要注意编写在Windows和Linux环境中运行的代码?这对于任何文档链接都是很好的。提前谢谢。

import ctypes  # An included library with Python install.
ctypes.windll.user32.MessageBoxA(0, "Your text", "Your title", 1)

AttributeError: 'module' object has no attribute 'windll'

2 个答案:

答案 0 :(得分:3)

最简单的选择可能是使用GUI框架;特别是Tkinter,它与Python捆绑在一起。以下代码应该在Python 2.x和3.x中跨平台工作(尽管Tkinter在Mac OS X中需要a bit of extra installation work):

try:
    # Python 3.x imports
    import tkinter as tk
    from tkinter import messagebox
except ImportError:
    # Fall back to 2.x
    import Tkinter as tk
    import tkMessageBox as messagebox

root = tk.Tk().withdraw()  # hide the root window

messagebox.showinfo('hello', 'world')  # show the messagebox

结果(在Windows 7上的2.7.10或3.5.0中):

resulting messagebox on-screen

还有其他messagebox个选项,可以是ask...(包含yes,no和cancel的各种组合)或show...(错误,警告或信息)。

答案 1 :(得分:0)

可移植性问题通常通过在平台特定部分上使用抽象层来解决 - 例如stdlib中的os.path模块,它具有相同API的不同实现(每个平台一个),并加载在运行时正确实现。

现在谈到GUI,事情变得更加复杂 - 特别是在没有内置gui工具包的unix世界中,以及很多可能的选择。如果你不关心原生的外观和感觉,只需要简单的功能,那么Tkinter可能是你最好的,否则你将不得不寻找更复杂的跨平台GUI工具包(Qt浮现在脑海中)或尝试构建并维护自己的抽象级别" native"目标平台的工具包(主要是主要的PITA)。