Portál AbcLinuxu, 10. května 2025 06:58
from gi.repository import Gtk w = Gtk.Window() w.connect('destroy', Gtk.main_quit) e = Gtk.Expander.new('Expand Me!') e.set_tooltip_text('This is the expander.') w.add(e) h = Gtk.Box() e.add(h) b = Gtk.Button.new_with_label('Click Me!') b.set_tooltip_text('This is the button.') h.add(b) w.show_all() Gtk.main()Toto ti nefunguje, jak má? (Gtk+ 3.2.3)
toto je python?
ja to píšem v C. Ak je to python tak výsledok je toto:
$ python gtkexp.py Traceback (most recent call last): File "gtkexp.py", line 1, in from gi.repository import Gtk File "/usr/lib/python2.7/dist-packages/gi/__init__.py", line 23, in from ._gi import _API, Repository ImportError: /usr/lib/python2.7/dist-packages/gi/_gi.so: undefined symbol: g_callable_info_skip_return
#include [gtk/gtk.h] int main(int argc, char *argv[]) { gtk_init(&argc, &argv); GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); GtkWidget *expander = gtk_expander_new("Expand Me!"); gtk_widget_set_tooltip_text(expander, "This is the expander."); gtk_container_add(GTK_CONTAINER(window), expander); GtkWidget *hbox = gtk_hbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(expander), hbox); GtkWidget *button = gtk_button_new_with_label("Click Me!"); gtk_widget_set_tooltip_text(button, "This is the button."); gtk_container_add(GTK_CONTAINER(hbox), button); gtk_widget_show_all(window); gtk_main(); return 0; }Zkompilovatelné s Gtk+ 2 i 3 a s obojím (2.24.8 a 3.2.2) se chová identicky - správně.
nooooo... tak to je zaujímavé, ja používam toto: http://developer.gnome.org/gtk/2.24/GtkTooltips.html a tu ked to čítam sa píše:
GtkTooltips has been deprecated in GTK+ 2.12, in favor of the new GtkTooltip API.
a ukazuje to tu: http://developer.gnome.org/gtk/2.24/GtkTooltip.html . Citujem:
Basic tooltips can be realized simply by using gtk_widget_set_tooltip_text()
No je to čo ty používaš. Takže zajtra sa na to pôjdem a asi to celé prerobím.... A myslím že tým pádom je to asi vyriešené...
GtkWidget *button2 = gtk_button_new_with_label("Or Me!"); gtk_container_add(GTK_CONTAINER(hbox), button2);A ked na neho nabehneš myšou tak sa tam objavi tip z expanderu
inak to mam 3x python 2.5 , 2.6 a 2.7. Toto hore bolo z defaultného pythona, teda asi 2.7, verzia 2.5 dáva toto:
$ python2.5 gtkexp.py
Traceback (most recent call last):
File "gtkexp.py", line 1, in <module>
from gi.repository import Gtk
ImportError: No module named gi.repository
ešte doplnil, štruktúra widgetov nie je dvojurovnova ale je to dost rozvetvený strom, napríklad:
+ GtkWidget
+----GtkContainer
+----GtkBox
+----GtkVBox
+----GtkFileChooserWidget
a každý "parent" ma spravidla viac childov. V tomto príklade uvádzam stale len jeden child...
sice nový pointer je definovaný ako gtkwidget * , ale samotný widget sa tvorí funkciou v tomto prípade:
gtk_file_chooser_widget_new()
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.