2010-04-01 2 views
0

나는 Mac OS X로 포팅하는 wxPython 기반의 앱을 가지고 있는데, 이는 네이티브 맥 경고처럼 보이는 몇 가지 경고를 보여줄 필요가있다. 그래서 나는 pyobjc를 사용하고있다.wxpython과 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

wxPython이 Mac에서 기본으로 보이지 않습니까? 그게 전부! wxWidgets는 [ "wxWidgets는 플랫폼의 기본 API를 사용하기 때문에 자체 응용 프로그램에 고유 한 모양과 느낌을 제공합니다."] (http://www.wxwindows.org/ "Thats FAIL!") – YOU

+0

네이티브 모양을 제공하지만 그렇지 않습니다. 예를 들어 미세 조정이 가능하다. 메시지 상자에서 Ok 버튼 대신 "Revert"를 원한다면 가능하지 않습니다. 내 자신의 대화 상자를 만들었습니다. 네이티브 아이콘을 사용하여 기본 메시지 상자를 사용하는 목적을 다시 무효로합니다. –

+0

내가 버그를 기록해야한다고 생각합니다. wx 사람들과. 메시지 상자의 캡션을 선택적 인수로 전달할 수없는 이유는 무엇입니까? –

답변

0

...

[편집이 : 대화 상자가 모델이고 그 뒤에 윈도우가 아니며, 때문에 나는 처음에이 생각이 수도 제어를 위해 싸우는 2 개의 이벤트 루프가 될 수 있습니다. . 당신의 대화 상자 - - 각 창은 대부분 다른 유형의 (응용 프로그램) 한편

, 전면 창에 카본과 코코아 창을 가질 수 있습니다 이유입니다, 그것의 자신이 있기 때문에 (전체 이벤트를 제어 만약 모델이라면 실제로 돌아갈 수 있습니다.]

Carbon/Cocoa Integration guide을 읽으시 길 바랍니다. 이제는 C가 아닌 파이썬에 있기 때문에 더 어려워집니다.

이전 프로젝트에서 우리는 커스터마이징 가능한 텍스트를 포함하여 우리 자신의 대화 상자를 구현했다고 생각합니다. (우리가 wxWidgets/C++을 사용하고 있었기 때문에 wxWidgets 레이어로 Carbon API를 사용하여 구현했습니다. 아주 잘됐다. (... 그리고 꽤 많이 수정 된 버전의 wx ...))

+0

흠. 그러나 무엇이 잘못 될 수 있습니까? atleast 아무것도 잘못 될 것 같아요, 나는 또한 내 애플 리케이션에 NSProgressindicator를 추가, 잘 작동하는 것, 그리고 대화 상자가 모달이며, 그 후에 폐기되면, 그것은 문제가되지 않을 수 있습니다? –

+0

@Anurag Uniyal : 잠재적으로. 다시 생각한 후에 대답을 업데이트했습니다. – RyanWilcox

0

가능한 질문 하나; Cocoa 버전이 아직 출시되지 않았다고 생각하기 때문에 Carbon 위에있는 Mac 용 wx 버전을 사용해야합니다. 코코아 버전이 출시되면 (wx 용) "적은"문제가있을 것이라고 생각합니다. 탄소와 코코아의 혼합은 나에게 문제가되는 것처럼 들리지만, 나는 특정한 결함을 지적 할 수 없다.

+0

예 현재 wx는 Carbon을 사용하지만 어쨌든 API 문제가 더 많습니다. wx가 코코아가 허용하는대로 메시지를 조정할 방법을 제공하지 않았습니다. –

0

wx.Dialog에서 상속받은 사용자 정의 WX 대화 상자를 작성하지 않은 이유는 무엇입니까? The WX demo has a very nice example of that. 조금 더 노력하지만 더 깨끗한 접근법. 내가 그 이벤트 루프 혼합, 너무 잘 작동합니다 생각하지 않습니다

+0

이미 그랬지만 대신 네이티브 대화 상자를 최대한 많이 사용하기로 결정했습니다. 그들을 복제하고 유지하려고 시도하는 것 –