2011-09-08 6 views
1

필자는 자신의 응용 프로그램에서 사용할 수 있도록 데스크탑의 "강조 표시 선택"기능의 기능을 다시 작성하려고합니다. "선택 강조 표시"라고 말하면 바탕 화면 (모든 메인 스트림 OS 기본)을 클릭하여 끌면 나타나는 선택 상자입니다.Python의 강조 선택 상자

나는 그것을 재현하려는 노력을 해왔고, 단순히 길을 찾을 수 없다. Python, Python 용 Xlib 및 몇 가지 다른 이상한 해킹을 시도했습니다. 이 모든 것은 나 자신의 문제를 가지고있어서 앞으로 나아갈 수 없습니다.

저는 일반적으로 일종의 출발점을 제시하지 않고 바로 위로 예제 코드를 요청하지 않지만이 프로젝트에서는 어디서부터 시작해야할지조차 모릅니다. 어떻게 할거 니?

  • 루트 윈도우 (또는 루트로 "표시"하는 투명층)
  • 선택 영역의 좌표를 반환해야 무승부 해봐야 (X, Y, 높이 : 여기

    는 요구의 너비)

업데이트 : 일부 정보를 잊어 버렸습니다. 나는 우분투 10.10를 사용하고

  • 나는 (비록 내가 그 문제한다고 생각하지 않습니다) 내가 필요한 여분의 라이브러리를 다운로드
  • 괜찮다 듀얼 모니터를
+0

pygtk로 onclick/release 처리기를 처리 할 수 ​​있습니까? 화면에 상자를 그릴 수 있습니까? 그렇다면 무엇이 더 필요합니까? –

+0

문제의 가장 어려운 부분은 하위 창/위젯이 아닌 루트 창에 상자를 그립니다. pygtk를 사용하여 루트 창에서 아무 것도 성공적으로 그렸습니다. – jwegner

답변

0

이게 당신이 찾고있는 것인지 모르겠지만 모듈에 다른 창을 만든 다음 드래그를 해제 할 때 코드에 보여 주면 어떨까요? 커서의 현재 위치를 가져 와서 창을 그려 볼 수 있습니다.

This should help you get the mouse position on the root window.

그래서, 당신의 코드가 난 단지 내부 __ 초기화 __ 어떤 일이 일어나는지의 관련 부분을 보여주는거야 (이 테스트되지 않은 코드입니다!) 이런 식으로 조금 보일 수 있습니다.

def __init__(self): 

    ... 
    #Some of your code here. 
    ... 

    win = gtk.Window(gtk.WINDOW_TOPLEVEL) 

    #Note that I am creating a popup window separately. 
    popwin = gtk.Window(gtk.WINDOW_POPUP) 

    #I am setting "decorated" to False, so it will have no titlebar or window controls. 
    #Be sure to compensate for this by having another means of closing it. 
    popwin.set_decorated(False) 

    def ShowPopup(): 
     #You may need to put additional arguments in above if this is to be an event. 
     #For sake of example, I'm leaving this open ended. 

     #Get the cursor position.    
     rootwin = widget.get_screen().get_root_window() 
     curx, cury, mods = rootwin.get_pointer() 

     #Set the popup window position. 
     popwin.move(curx, cury) 
     popwin.show() 

    def HidePopup(): 
     #This is just an example for how to hide the popup when you're done with it. 
     popwin.hide() 

    ... 
    #More of your code here. 
    ... 

    #Of course, here is the code showing your program's main window automatically. 
    win.show() 

매우 단순한 접근 방식이지만 사용자가 원하는 모양을 제공해야합니다.