我有一个基于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代码的混合,任何失败点是否有任何问题?
答案 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 ...)