我正在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'
答案 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中):
还有其他messagebox
个选项,可以是ask...
(包含yes,no和cancel的各种组合)或show...
(错误,警告或信息)。
答案 1 :(得分:0)
可移植性问题通常通过在平台特定部分上使用抽象层来解决 - 例如stdlib中的os.path
模块,它具有相同API的不同实现(每个平台一个),并加载在运行时正确实现。
现在谈到GUI,事情变得更加复杂 - 特别是在没有内置gui工具包的unix世界中,以及很多可能的选择。如果你不关心原生的外观和感觉,只需要简单的功能,那么Tkinter可能是你最好的,否则你将不得不寻找更复杂的跨平台GUI工具包(Qt浮现在脑海中)或尝试构建并维护自己的抽象级别" native"目标平台的工具包(主要是主要的PITA)。