IconView Icons umbenenen

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Wie kann ich bei einem Iconview statt des Textes ein Entry Anzeigen lassen,
wie beim Nautilus wenn man auf einem Icon "F2" drückt?

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Deine Beschreibung ist äußerst unklar, aber IMO suchst du das:
PyGTK Referenz hat geschrieben:gtk.IconView.set_cursor

def set_cursor(path, cell=None, start_editing=False)

start_editing : if True the specified cell should start being edited
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Danke für deine Antwort!
Leider komme ich mit dem zweiten Argument nicht klar ("cell"), ich habe keine Ahnung woher ich den "cell Renderer" bekommen kann wenn ich "F2" drücke zum umbenennen der Icons. Da gibt es zwar "get_item_at_pos" das gibt den "cell Renderer" zurück, aber da weiß ich wieder nicht wie ich an die Position des Markieren Icons kommen.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

``cell`` benötigst du doch theoretisch gar nicht?!
Und für den ``path`` gibt es:
gtk.IconView.get_selected_items

def get_selected_items()

Returns : a list of the paths of the selected icons.
Hier mal Beispielcode:

Code: Alles auswählen

icon_view.set_selection_mode(gtk.SELECTION_SINGLE)
sel_items = icon_view.get_selected_items()
if len(sel_items) == 1:
  icon_view.set_cursor(sel_items[0], start_editing=True)
else:
  # no selection
P.S. Alles ungetestet der Referenz entnommen. Poste bitte eventuelle Fehler.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Danke nochmal für deine Antwort!

Code: Alles auswählen

import gtk

def rename(accel_group, accel, keyval, modifier):
    print "rename"
    sel_items = i.get_selected_items()
    if len(sel_items) == 1:
        print sel_items
        i.set_cursor(sel_items[0], start_editing=True) 
  
w = gtk.Window()

i = gtk.IconView()
i.set_selection_mode(gtk.SELECTION_SINGLE) 

model = gtk.ListStore(str, gtk.gdk.Pixbuf)

i.set_model(model)
i.set_text_column(0)
i.set_pixbuf_column(1)
i.set_columns(-1)
i.set_item_width(100)

pixbuf = gtk.gdk.pixbuf_new_from_file("/usr/share/icons/gnome/scalable/mimetypes/audio-x-generic.svg")
model.append(["Test", pixbuf])

w.add(i)

accelgroup = gtk.AccelGroup()

key, modifier = gtk.accelerator_parse("F2")
        
accelgroup.connect_group(key, modifier, gtk.ACCEL_LOCKED, rename)

w.add_accel_group(accelgroup)
    
w.show_all()

gtk.main()
Es passiert beim drücken von "F2" nichts.

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
ms4py
User
Beiträge: 1178
Registriert: Montag 19. Januar 2009, 09:37

Wird die Methode überhaupt aufgerufen? Kenn mich mit den Tastatureingaben nicht aus.

Ansonsten starte die Funktion mal testweise über einen extra Button.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Die Funktion wird aufgerufen, die Ausgabe über die zwei print's sieht so aus:

rename
[(0,)]

Gruß
Andyh
Meinen Dickschädel schon bemerkt?
Ich bin jetzt FACHARBEITER (Zerspanungsmechaniker)!!!
[code]import sys

if sys.platform == "win32":
print "this program only runs on operating systems!!!"
sys.TotalError()[/code]
Antworten