einelementige tupel extrahieren

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

ich hab einen int in einer tupel (von Tkinter.Listbox.curselection())
wie krieg ich ihm den da raus?
cp != mv
mawe
Python-Forum Veteran
Beiträge: 1209
Registriert: Montag 29. September 2003, 17:18
Wohnort: Purkersdorf (bei Wien [Austria])

Code: Alles auswählen

In [1]: t = (42,)

In [2]: t[0]
Out[2]: 42
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Schon mal überlegt, das Tutorial durchzuarbeiten? Das was du fragst steht genau so im Tuturial drin.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Mit dem ",=" operator:

Code: Alles auswählen

>>> t = (42,)
>>> i ,= t
>>> i
42
ist nicht ganz ernst gemeint
TUFKAB – the user formerly known as blackbird
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

hmmmmm......

daran hab ich natuerlich auch schon gedacht.
mein fehler muss dan irgendwo anders liegen

vieleicht koennt ihr euch das mal angucken:

Code: Alles auswählen

def download(index):
	index = index[0]
	print 'downloading', file_locations[index]
	results.delete(index)
file_locations beinhaltet die orte der dateien die in der Listbox zu sehe sind.
wenn man nun einer diese dateien mit einen doppelclick downloaden will[1]
kriege ich eine fehlermeldung:

Code: Alles auswählen

Traceback (most recent call last):
  File "lib-tk/Tkinter.py", line 1348, in __call__
    return self.func(*args)
  File "getit/simple.py", line 116, in <lambda>
    results.bind('<Button-1>', lambda n: download(results.curselection()))
  File "getit/simple.py", line 75, in download
    print 'downloading', file_locations[index]
TypeError: list indices must be integers
diese sagt mir das 'index' kein int ist (?)

[1]

Code: Alles auswählen

results.bind('<Button-1>', lambda n: download(results.curselection()))

Schon mal überlegt, das Tutorial durchzuarbeiten? Das was du fragst steht genau so im Tuturial drin.
superb, just what i needed. thx
cp != mv
BlackJack

Jau weil in dem Tutorial sicher auch die Stelle kommt an der Dir gezeigt wird, wie Du herausbekommst welchen Typ ein Objekt hat.

Und das mal auszuprobieren ist auch nicht soooooo schwer.

Code: Alles auswählen

In [20]: root = tk.Tk()

In [21]: lb = tk.Listbox(root)

In [22]: lb.insert(0, 'a', 'b', 'c')

In [23]: lb.pack()

In [24]: lb.curselection()
Out[24]: ('1',)
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

schon klar dabei wird ein tupel zurueckgegeben
aber mit "index = index[0]" mache ich doch daraus einen int !?
cp != mv
Zap
User
Beiträge: 533
Registriert: Freitag 13. Oktober 2006, 10:56

Einfach mal mit type() anschauen.
Wenn's ein str ist so wie man's beim Blackbird in
Zeile 10 sieht, dann brauchste noch ein int(..)
Costi
User
Beiträge: 545
Registriert: Donnerstag 17. August 2006, 14:21

asoooo, jetzt verstehe ich die welt wieder
und bedanke mich herzlich fuer eure geduld :lol:
cp != mv
Antworten