Найти - Пользователи
Полная версия: получение координат курсора в GTK? + еще 2 вопроса
Начало » GUI » получение координат курсора в GTK? + еще 2 вопроса
1
lwgen
Мне вот итересно как спомощью gtk можно получить координаты (xy) текущего положения курсора? Я знаю как это сделать другими путями - через tkinter или win32gui но хочется узнать как это в gtk делается.
нашел нечто похожее на необходимое, но до меня ни как не доходит, что им надо передать в качестве атрибута.
gtk.gdk.pointer_grab()
gtk.gdk.Display.get_pointer()
это был главный вопрос, а вот еще парочку в дополнение.
как создать окно без titleBar ?
если использовать glade xml то можно ли после импорта проделать с гуи что нибуть типа gtk.Window.move()?
slav0nic
1) Координаты:
я когда-то делал так:


def on_cursor_move(self, widget, event):
print int(event.x), int(event.y)

self.treeview.connect(“motion-notify-event”, self.on_cursor_move)


думаю в других виджетах аналогично, поищи в pygtk FAQ как выводить gtk.Tooltips() в нужном месте

2)

window = gtk.Window(gtk.WINDOW_POPUP)

будет без кнопок закрытия, типа как выплывающие сообщения notify в асях, плеерах и тп
3)
ты импортируешь объекты, в *.glade задаёшь всякие размеры и параметры, после чего можешь делать всё, что возможно )

если я правильно понял вопросы
lwgen
slav0nic
1) Координаты:
я когда-то делал так:


def on_cursor_move(self, widget, event):
print int(event.x), int(event.y)

self.treeview.connect(“motion-notify-event”, self.on_cursor_move)


думаю в других виджетах аналогично, поищи в pygtk FAQ как выводить gtk.Tooltips() в нужном месте
что то очень сложно посмотрел в фак там лежит пример TreeViewTooltips.py я сильно пока в него не всматривался но как я понял это сообщает координаты курсора при пересечении с каким нибуть виджетом, если это так то мне надо немного другое:
вот это в tkinter:
root = Tk()
print root.winfo_pointerxy()
это в win32gui:
print GetCursorPos()
lwgen
slav0nic
3)
ты импортируешь объекты, в *.glade задаёшь всякие размеры и параметры, после чего можешь делать всё, что возможно )

если я правильно понял вопросы
не допонял немного - лучше на наглядных примерах
ну вот пример:
xml = gtk.glade.XML('project1.glade')
window = xml.get_widget('window1')
button = xml.get_widget('button1')
button.connect(“clicked”, on_button_clicked)
window.add(button)
window.show_all()

я же не могу теперь сделать так
window.move(500,350)

а если просто создать
window = gtk.Window(gtk.WINDOW_TOPLEVEL)
button = gtk.Button(“Hello World”)
window.add(button)
button.show()
window.show()
то спокойно делается window.move(500,350)
slav0nic
lwgen
по поводу курсора
вот пример
#1

import gtk, gtk.gdk
def mouse_move(self, event):
lable.set_text(“координаты %d %d”%(event.x, event.y))

window = gtk.Window()
lable = gtk.Label(“координаты:”)
window.add(lable)
window.add_events(gtk.gdk.MOTION_NOTIFY | gtk.gdk.BUTTON_PRESS)
window.connect('motion-notify-event', mouse_move)
window.connect(“destroy”, gtk.main_quit)
window.show_all()
gtk.main()

думаю если по виджетам водить будешь мышаком, это тоже будет работать

c http://www.async.com.br/faq/pygtk/index.py?req=show&file=faq23.024.htp
23.24. Can GTK know the mouse position outside of GTK Application?
To get the position relative to a given window

gdkwindow.get_pointer()

If you need the absolute position, call get_pointer on the root window of the current screen:

rootwin = widget.get_screen().get_root_window()
x, y, mods = rootwin.get_pointer()

If you call get_pointer() on some other GdkWindow, the result will be relative to the position of that window (so you can get negative coordinates)

(James Henstridge)
про glade не скажу, вохможно где-то чего-то не так с каким-то property или не так описал ф-цию, или ещё что%)
чем плох гтк, так это тем, что надо усердно копаться в документации, даже по простым вопросам=\

import gtk, gtk.glade
def on_button_clicked(self):
window.move(100,200)

xml = gtk.glade.XML('1.glade')
window = xml.get_widget('window1')
button = xml.get_widget('button1')
#window = gtk.Window(gtk.WINDOW_TOPLEVEL)
#button = gtk.Button(“okeeey”)
button.connect(“clicked”, on_button_clicked)
window.add(button)
window.show_all()
gtk.main()


у меня всё работает
lwgen
Спасибо, в общем все понял.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB