Kann mir jemand ein Pyton-Modul für GUI-Programmierung empfehlen?
Im Internet habe ich folgende gefunden:
http://wiki.python.org/moin/GuiProgramming
Ich will damit Bilder in dieser Form darstellen:
Wenn dann auf ein Bild geklickt wird, sollen andere ähnliche Bilder, die unter diese Kategorie fallen, angezeigt werden (habe mir noch nicht überlegt wie genau).
Vielleicht eignet sich ein Modul besonders für mein Problem.
Danke im Vorraus.
Modul für GUI-Programmierung
Um Bilder in einem Fenster darzustellen kannst Du jedes beliebige GUI-Framework verwenden. Um die Wahl des Frameworks etwas spezieller zu treffen, kannst Du Dich ja mal mit diesen Fragen auseinandersetzen.barisoezcan hat geschrieben:Vielleicht eignet sich ein Modul besonders für mein Problem.
mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit )
-
- User
- Beiträge: 68
- Registriert: Sonntag 10. März 2013, 21:14
-
- User
- Beiträge: 73
- Registriert: Freitag 15. März 2013, 19:38
Danke =)
Wie habe ich übrigens ein Bild mit zu erzeugen?
Wenn ich für "node" ein Array mit den Dimensionen 40, 40, 3 übergebe, wird nachher nur Mist angezeigt.
(40 und 40 für die Größe des Bildes und 3 für die einzelnen RGB-Werte)
Muss das Array vielleicht anders übergeben werden?
Wie habe ich übrigens ein Bild mit
Code: Alles auswählen
img = Image.fromarray(node, "RGB")
Wenn ich für "node" ein Array mit den Dimensionen 40, 40, 3 übergebe, wird nachher nur Mist angezeigt.
(40 und 40 für die Größe des Bildes und 3 für die einzelnen RGB-Werte)
Muss das Array vielleicht anders übergeben werden?
-
- User
- Beiträge: 73
- Registriert: Freitag 15. März 2013, 19:38
Code: Alles auswählen
import tkinter
import numpy
from PIL import Image, ImageTk
#nodes ist ein Array der Groesse 40*40*3
#40 und 40 Groesse des Bildes
#3 für RGB-Werte
nodes = numpy.load("nodes.npy")[0][0]
img = Image.fromarray(nodes, "RGB")
root = tkinter.Tk()
image1 = ImageTk.PhotoImage(img)
label1 = tkinter.Label(root,image=image1)
label1.pack()
root.mainloop()
@barisoezcan: Geh doch mal den Weg anders herum: Lade ein kleines RGB-Bild mit `PIL.Image` und wende dann `numpy.array()` darauf an. Dann vergleiche die Struktur dieses Arrays mit Deinem.
-
- User
- Beiträge: 73
- Registriert: Freitag 15. März 2013, 19:38
Das Array hat genau die selbe Struktur.
Aber die einzelnen Unterelemente sind numpy.uint8.
Bei mir im Beispiel sind sie aber numpy.float64.
Könnte es daran liegen?
Aber die einzelnen Unterelemente sind numpy.uint8.
Bei mir im Beispiel sind sie aber numpy.float64.
Könnte es daran liegen?
-
- User
- Beiträge: 73
- Registriert: Freitag 15. März 2013, 19:38
Okay, hab die Float-Werte in Integer umgewandelt...
Es liegt nicht daran
Mir fällt nicht ein, was es sonst sein könnte :K
Es liegt nicht daran
Mir fällt nicht ein, was es sonst sein könnte :K
-
- User
- Beiträge: 73
- Registriert: Freitag 15. März 2013, 19:38
Die Unterelemente des Arrays sind Float-Werte zwischen 0 und 1.BlackJack hat geschrieben:@barisoezcan: Bist Du sicher dass das Bild nicht ganz einfach so aussieht‽
Wenn ich das Array mit
Code: Alles auswählen
plot = plt.imshow(node, interpolation = "nearest")
Wenn ich das selbe Array (unverändert) mit
Code: Alles auswählen
img = Image.fromarray(node, "RGB")
image1 = ImageTk.PhotoImage(img)
usw..
Wenn ich das selbe Array (Werte mit 255 multipliziert und dann in Integer umgewandelt) wieder mit
Code: Alles auswählen
img = Image.fromarray(node, "RGB")
image1 = ImageTk.PhotoImage(img)
usw..
Das merkwürdige ist nur, wenn ich ein Bild mit
Code: Alles auswählen
im = Image.open("TEST10.jpg")
bild = (numpy.array(im))
pix = Image.fromarray(bild, "RGB")
:K :K :K :K :K
-
- User
- Beiträge: 73
- Registriert: Freitag 15. März 2013, 19:38
Ok, ich glaube ich bin auf den Punkt des Problems gekommen...
Die Ausgabe ist MERKWÜRDIGERWEISE:
[23.29392, 34.29, 32.19]
[ 23. 34. 32.]
Wo zum Teufel kommen die Punkte her, und wieso sind die Elemente nicht durch Kommas getrennt?
Code: Alles auswählen
import numpy
a = [23.293920, 34.29, 32.19]
numpy.save("Test123.npy", a)
b = numpy.load("Test123.npy")
for i in range(len(b)):
b[i] = int(b[i])
print(a)
print(b)
[23.29392, 34.29, 32.19]
[ 23. 34. 32.]
Wo zum Teufel kommen die Punkte her, und wieso sind die Elemente nicht durch Kommas getrennt?
Zuletzt geändert von barisoezcan am Dienstag 16. April 2013, 20:28, insgesamt 1-mal geändert.
Ist die Reihenfolge richtig?barisoezcan hat geschrieben:Es sollten 3 numpy.uint8 sein.
Also RGBRGB.... und das dann 40 mal 40
Erster Test: Probiere doch mal am Ende der dritten Schleife
Code: Alles auswählen
node[i][j][z] = numpy.uint8(128)
Xe
-
- User
- Beiträge: 73
- Registriert: Freitag 15. März 2013, 19:38
@Xe:
Wenn ich es plotte, kommt ein graues Bild..
Wenn ich es aber in der GUI anzeigen lassen will, sieht es so aus:
Und das Array sieht dann wie folgt aus:
[[ 128. 128. 128.]
[ 128. 128. 128.]
[ 128. 128. 128.]
...,
[ 128. 128. 128.]
[ 128. 128. 128.]
[ 128. 128. 128.]]
...,
Die Punkte und die fehlenden Kommas stören mich (und ich denke, den Interpreter auch )
Wenn ich es plotte, kommt ein graues Bild..
Wenn ich es aber in der GUI anzeigen lassen will, sieht es so aus:
Und das Array sieht dann wie folgt aus:
[[ 128. 128. 128.]
[ 128. 128. 128.]
[ 128. 128. 128.]
...,
[ 128. 128. 128.]
[ 128. 128. 128.]
[ 128. 128. 128.]]
...,
Die Punkte und die fehlenden Kommas stören mich (und ich denke, den Interpreter auch )
@barisoezcan: Du wandelst auch nicht den Datentyp um, sondern rechnest nur die Zahlen um.
Code: Alles auswählen
img_bytes = (255*img_float).astype(numpy.uint8)
-
- User
- Beiträge: 73
- Registriert: Freitag 15. März 2013, 19:38
Sirius3 hat geschrieben:@barisoezcan: Du wandelst auch nicht den Datentyp um, sondern rechnest nur die Zahlen um.
Code: Alles auswählen
img_bytes = (255*img_float).astype(numpy.uint8)
Es hat sich nichts getan
Sieht so aus, als würdest du immer noch floats haben.barisoezcan hat geschrieben:Es hat sich nichts getan
Wie wäre es dann mit
Code: Alles auswählen
punkte = []
for...
for....
for ...
punkte.append( int(node[i][j][z]) )
Xe
@xeike: Dadurch wäre nichts gewonnen und wie man der „float-Falle” aus dem Weg geht hat Sirius3 schon gezeigt.
@barisoezcan: Zeig doch mal minimalen, lauffähigen Quelltext mit dem man Dein Problem nachvollziehen kann.
@barisoezcan: Zeig doch mal minimalen, lauffähigen Quelltext mit dem man Dein Problem nachvollziehen kann.