我想在gtk.widget下显示一个gtk.Window。
但我不知道如何为gtk.window检索gtk.widget的坐标。
有谁知道?
感谢。
答案 0 :(得分:0)
您可以使用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()