gtk.widget 아래에 gtk.Window를 표시하고 싶습니다.gtk.widget 아래에 gtk.window를 작성하십시오.
하지만 내 gtk.window에 대한 gtk.widget의 좌표를 검색하는 방법을 모르겠습니다.
누구든지 알고 계십니까?
감사합니다.
gtk.widget 아래에 gtk.Window를 표시하고 싶습니다.gtk.widget 아래에 gtk.window를 작성하십시오.
하지만 내 gtk.window에 대한 gtk.widget의 좌표를 검색하는 방법을 모르겠습니다.
누구든지 알고 계십니까?
감사합니다.
gtk.Widget의 "window"속성을 사용하여 gtk.gdk.Window과 연결할 수 있습니다. 그런 다음 get_origin() 메서드를 사용하여 화면 좌표를 가져옵니다.
이 좌표는 최상위 창에 대한 것입니다. (나는 틀릴 수도 있지만 아래 코드는이를 지원하는 것 같습니다). get_allocation() 메서드를 사용하여 부모와 관련된 위젯의 좌표를 가져올 수 있습니다.
나는 from here이라는 아이디어가 있습니다. 일부 창 관리자는 창 위치의 초기 설정을 무시합니다. 더 많은 정보를 원하시면 this post을 보길 원하지만 개인적으로 체크 아웃하지는 않았습니다.
또 다른 최상위 창을 만들려고 했습니까? 또는 팝업 창이 있습니까?
#!/usr/bin/env python
import sys
import pygtk
import gtk
class Base:
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.window.connect("destroy", self.on_destroy)
self.box = gtk.VButtonBox()
self.buttons = [
gtk.Button("Test 1"),
gtk.Button("Test 2"),
gtk.Button("Test 3")
]
for button in self.buttons:
self.box.add(button)
button.connect("clicked", self.show_coords)
button.show()
self.window.add(self.box)
self.box.show()
self.window.show()
def show_coords(self, widget, data=None):
print "Window coords:"
print self.window.get_window().get_origin()
print "Button coords:"
print widget.get_allocation()
def on_destroy(self, widget, data=None):
gtk.main_quit()
def main(self):
gtk.main()
if __name__ == "__main__":
base = Base()
base.main()
감사합니다.하지만 작동하지 않습니다. 사실, gnomeapplet.Applet "아래에 gtk.window를 배치하고 싶지만"gnomeapplet.Applet "에는 get_window() 메서드가 없습니다. 따라서 어떻게 해야할지 모르겠군요. – darius
흠. 난 단지 더 일반적인 GTK 컨트롤로 작업 했으므로 애플릿의 내부 동작에 대해서는 잘 모르겠다. 이미이 동작을 설명하는 특정 응용 프로그램이나 애플릿이 있습니까? – detly
예, 시계 애플릿입니다. http :// /gnome-panel.sourcearchive.com/documentation/2.30.0/files.html gtk.gdk.WINDOW_TYPE_HINT_DOCK 상수와 함께 set_type_hint()를 사용하려면 calendar-window.c에서와 같이 시도했지만, 윈도우가 패널에 의해 숨겨 짐 – darius