Browsing Programm im Canvas

Fragen zu Tkinter.
Antworten
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

Hi @ all,
ich programmiere gerade ein Programm in Tkinter, was später Setups von einer CD aus starten soll.
Das browsing läuft über ein Canvas und wird mithilfe vom Binding realisiert.

So sieht der Quelltext aus:

Code: Alles auswählen

from Tkinter import *
from thread import*
from os import*


root=Tk()
root.title('Auswahl')
root.config(background='White')

pinstimg=PhotoImage(file='D:\Programmieren\Python20\FullPyThONCD\Schlange.gif')
ordneimg=PhotoImage(file='D:\Programmieren\Python20\FullPyThONCD\Ordner.gif')

Kissen=Canvas(root, background='White', width=640, height=480)
Kissen.grid(row=1, column=2)

pyinstall=Kissen.create_image(320,320, image=pinstimg, anchor=CENTER)
pyinstext=Kissen.create_text(320,440,\
        text='Python installieren', font='ARIAL 25')

pyordner1=Kissen.create_image(78,60, image=ordneimg, anchor=CENTER)
pyortext1=Kissen.create_text(78,110,\
        text='Spiele', font='ARIAL 14')

pyordner2=Kissen.create_image(238,60, image=ordneimg, anchor=CENTER)
pyortext2=Kissen.create_text(238,110,\
        text='Anwender', font='ARIAL 14')

pyordner3=Kissen.create_image(398,60, image=ordneimg, anchor=CENTER)
pyortext3=Kissen.create_text(398,110,\
        text='Scherz', font='ARIAL 14')

pyordner4=Kissen.create_image(558,60, image=ordneimg, anchor=CENTER)
pyortext4=Kissen.create_text(558,110,\
        text='LOL', font='ARIAL 14')

def viva():
    if i==0:
        Kissen.itemconfig(pyortext1, fill='Blue')
        i=1
    else:
        Kissen.itemconfig(pyortext1, fill='Black')
        i=0

#Kissen.tag_bind(pyordner1, '<Enter>', Kissen.itemconfig(pyortext1, fill='Blue'))
#Kissen.tag_bind(pyordner1, '<Leave>', Kissen.itemconfig(pyortext1, fill='Black'))
Kissen.tag_bind(pyordner1, '<Button-1>', viva)


Der Sourcecode ist bisher nur ein Test, um nach und nach das Programm zu erweitern. (Also nicht wundern, wenn ihr keine "Wirklichen Funktionen" seht.

Nun habe ich 2 Probleme:
1.Wenn ich das Programm laufen lasse, kommt immer eine Fehlermeldung beim klicken auf den ersten Ordner(Bild oben links).
Ich habe irgendetwas übersehen!

2.Wie kann ich unter Python(mit Windows) den CD-ROM-Laufwerksbuchstaben herrausfinden.(Er bleibt nicht immer gleich)

MFG,
Florian
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Hallo!

zu 1.
Der Wortlaut der Fehlermeldung wäre hilfreich.

zu 2.
Das wird schwierig. Auf meinem W2K-Rechner z.B. erkennt der Explorer fünf CD-ROM-Laufwerke, 2 davon sind echte und 3 virtuelle. Du wirst also dem Anwender eine Auswahlliste präsentieren müssen. Wie man nun CD-ROM-Laufwerke erkennt, weiß ich nicht, sollte aber mit den "Windows Extensions" irgendwie gehen.

Jan
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

Hiho,
ging ja schnell!!!

zu 1.

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "d:\programmierprogramme\python20\lib\lib-tk\Tkinter.py", line 1287, in __call__
    return apply(self.func, args)
TypeError: no arguments expected
zu 2.
Kannst du mir dann sagen, wie ich ein drop-downmenü mit Tkinter erzeugen kann???


Danke,
Florian
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

... kann mir noch jemand schreiben, wie ich Objekte im Canvas für den Benutzer unsichtbar mache, bzw. sie aus dem Canvas hole, ohne sie wegzuschmeißen, damit ich sie später nochmal benutzen kann???

Danke,
Florian
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

Hiho,
ich dummerchen hab was übersehen gehabt zu 1.
in die Prozedurparameter muss e eingetragen werden, dann funztz!!!
Naja, manchmal hab ich halt nen Brett vorm Kopf beim Programmieren...

Trotzdem Danke,
Florian
Voges
User
Beiträge: 564
Registriert: Dienstag 6. August 2002, 14:52
Wohnort: Region Hannover

Zu 2. kann ich auch nichts sagen. Bisher hab' ich um Menus immer einen Bogen gemacht.

Zum Unsichbarmachen von Canvas-Items fiele mir nur ein, die Items mit coord() irgendwo außerhalb des Canvas zu platzieren.

Jan
Pythonaya
User
Beiträge: 90
Registriert: Sonntag 26. Januar 2003, 11:34
Wohnort: Großbeeren (nahe Berlin)

Joa, das hatte ich mir auch schon gedacht. Ich könnte auch ein Weißes Rechteck als Hintergrund benutzen, dass immer wieder nach vorne rutscht und somit das alte Menü verdeckt. Wenn ich dann ins alte Menü zurück will, ziehe ich die Weiße Wand nach vorne und confige die Items in den Vordergrund.


Danke nochmal,
Florian
Antworten