Button soll externes Programm starten

Fragen zu Tkinter.
Antworten
kay2011
User
Beiträge: 4
Registriert: Sonntag 13. November 2011, 15:13

Hallo liebe Freunde, hier der Testcode:

Code: Alles auswählen

import tkinter
import os

Top = tkinter.Tk()
Top.title('Test')

A = tkinter.Button(master=None, text="testbutton",width="20", command =lambda:os.startfile('C:\Benutzer\username\Desktop\woerterbuch.txt'))
A.pack()

Top.mainloop()
Das Programm soll die angegebene Textdatei öffnen.
Die Datei liegt an den angegebenen Pfad.
Das Programm gibt mir nach anklicken des Buttons jedoch ein:

Code: Alles auswählen

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Python32\lib\tkinter\__init__.py", line 1399, in __call__
    return self.func(*args)
  File "C:/Python32/Lib/idlelib/test4", line 9, in <lambda>
    A = tkinter.Button(master=None, text="testbutton",width="20", command =lambda:os.startfile('C:\Benutzer\username\Desktop\woerterbuch.txt'))
WindowsError: [Error 2] Das System kann die angegebene Datei nicht finden: 'C:\\Benutzer\\username\\Desktop\\woerterbuch.txt'
zurück. Was habe ich falsch gemacht ?
Ich hab den Textcode oben gegoogelt weil ich einfach ein kleines Programm mit mehreren Buttons haben möchte.
Durch Drücken eines Button soll ein externes Programm gestartet werden.
Wie könnte ich mehrere Buttons mit einer rationalen Lösung hinzufügen ?
Es gibt bestimmt ein elegantere Lösung. Hab in google nur englische snippets gefunden, die hab ich nich verstanden.
Ich bitte um Hilfe. Danke !
Zuletzt geändert von kay2011 am Dienstag 15. November 2011, 20:09, insgesamt 1-mal geändert.
BlackJack

@kay2011: Der Fehler ist doch recht deutlich in der Ausnahme beschrieben: Es gibt die angegebene Datei nicht.

Es sieht übrigens so aus als wenn Du Dein Programm in der Verzeichnisstruktur der Standardbibliothek abgelegt hast — das ist keine gute Idee.
kay2011
User
Beiträge: 4
Registriert: Sonntag 13. November 2011, 15:13

Die Datei ist auf dem Desktop sehr wohl vorhanden.
Die Datei wird auch auf C:\woerterbuch gefunden, von daher verstehe ich nicht ganz woher der Fehler kommt.
BlackJack

@kay2011: Unter dem Pfad den Du angegeben hast wird die Datei nicht gefunden. Wenn sie da wäre, würde sie gefunden. Dann hättest Du diese Ausnahme nicht. Das ist doch wohl irgendwie offensichtlich, oder?

Da Du wahrscheinlich nicht wirklich einen Benutzer mit dem Namen 'username' hast, könnte es vielleicht sein, dass der tatsächliche Namen mit einem Buchstaben beginnt, der mit dem '\' zusammen eine Escape-Sequenz bildet!?
kay2011
User
Beiträge: 4
Registriert: Sonntag 13. November 2011, 15:13

So hier die provisorische Lösung zu meinen Anliegen:

Code: Alles auswählen

import tkinter
import os


Top = tkinter.Tk()
Top.title('Test')


A = tkinter.Button(master=None, text="testbutton",width="20", command =lambda:os.system('C://Users/maz/Desktop/woerterbuch.txt'))

A.pack()



Top.mainloop()
Diesmal mit meinen normalen Usernamekürzel (den hatte ich eigentlich aus Sicherheitsaspekten nur in username geändert) aber naja.
Was war das Problem ? IDLE hat den Pfad, welche in den Eigenschaften vom woerterbuch.txt angegeben war so NICHT interpretieren können.
Auch die " mussten durch ' ersetzt werden. Der Pfad beginnt mit C:// statt nur C:/
Und das wohl wichtigste ist: Der Nutzername muss durch ein simples Users ersetzt werden.
In Windows wird einem wohl der Pfad mit dem eigenen Benutzernamen gezeigt, mit diesem kann IDLE aber nichts anfangen.
Woher soll IDLE auch wissen, was für Namen die User haben ? naja, dies scheint wohl ein Thema für sich zu sein.

Zumindest hat es so nun geklappt und ich hoffe, dass ich durch meinen Beitrag ein wenig helfen konnte.
Es gibt ja bestimmt noch mehr Anfänger, die diese Lösung suchen.
Die vorliegende Lösung ist aus Programmierersicht vielleicht nich so super aber immerhin ist es eine.
In diesem Sinne - schönen Abend !
BlackJack

@kay2011: Ob Du nun ' oder " nimmst ist unerheblich. Das Ergebnis ist gleich.
Antworten