我应该混合wxpython和pyobjc吗?

时间:2010-04-01 14:42:53

标签: python objective-c wxpython wxwidgets pyobjc

我有一个基于wxPython的应用程序,我移植到Mac OS X,因为我需要显示一些看起来像本机mac警报的警报,所以我正在使用pyobjc,例如。

import Cocoa

import wx

app = wx.PySimpleApp()
frame = wx.Frame(None, title="mac alert test")
app.SetTopWindow(frame)
frame.Show()

def onclick(event):
    Cocoa.CFUserNotificationDisplayAlert(0, 3, 0, 0, 0, "Should i mix wxpython and objc", "hmmm...", 
                                         "Cool", "Not Cool", "Whatever")

frame.Bind(wx.EVT_LEFT_DOWN, onclick)
app.MainLoop()

wx和objc代码的混合,任何失败点是否有任何问题?

3 个答案:

答案 0 :(得分:0)

要问一个可能的问题;我相信你必须使用适用于Mac的wx版本,因为我认为Cocoa版本还没有发布。一旦cocoa版本发布(对于wx),我认为必须有“更少”的问题。混合碳和可可对我来说有问题,但我不能指出具体的问题。

答案 1 :(得分:0)

你是不是只编写了一个继承自wx.Dialog的自定义WX对话框? The WX demo has a very nice example of that。更多的工作,但更清洁的方法。

答案 2 :(得分:0)

我认为这样做不会太好,混合事件循环......

[编辑:我最初认为这是因为对话框是模型而后面的窗口不是,并且可能有两个事件循环争夺控制权。 (因为每个窗口都有自己的窗口,这就是为什么你可以使用Carbon和Cocoa窗口(主要是其他类型的应用程序)。

另一方面,前窗 - 你的对话框 - 控制整个事件循环,如果它是模型,所以它可以实际工作。]

我真的建议你阅读Carbon/Cocoa Integration guide。现在,这更难,因为你使用的是Python,而不是C,但它可以解释一些概念。

我认为在之前的项目中我们实现了这样的对话框,包括可自定义的文本。 (由于我们使用的是wxWidgets / C ++,我们只使用带有wxWidgets层的Carbon API实现了这一点,我们看起来相当不错。(......我们有一个非常大的修改版本的wx ...)