Erstellung eines Windows-Shell-Befehls mit askopenfilename

Fragen zu Tkinter.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Die GUI sollte jetzt eigentlich kein großes Problem darstellen, versuch dich erstmal selbst daran und wenn es Schwierigkeiten gibt melde dich nochmal.

Für "gelabelte" Eingabefelder habe ich hier noch was, falls du Interesse hast: http://www.python-forum.de/pastebin.php?mode=view&s=136
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
colonelkurtz
User
Beiträge: 6
Registriert: Freitag 21. Januar 2011, 15:42

So, ich muss nochmal nerven:

@Xynon1: Das Skript tut's nicht. Leider weiß ich nicht, wass 'if all(...' in der say-hi-Funktion prüfen will. Jedoch scheint diese Prüfung nicht erfüllt zu sein. Eine 'print 'test'' Ausgabeaufforderung in der Konsole wird nicht nachgegangen, sobald der 'Starte Rechnung'-Button geklickt wird.

Falls Du demnächst noch einmal Zeit hast, würde ich Dich bitten, die angesprochene if-Bedingung mit einem print 'x-beliebiger String' zu testen und erstmal den subprocess.Popen-Befehl außen vor zu lassen.

Dann mache ich selbst mit der Widget-Erzeugung weiter und will aufhören zu fragen ;).
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo colonelkurtz

Diese Ergänzung macht das Skript von Xynon1 lauffähig:

Code: Alles auswählen

app_win = tkinter.Tk()
app_win.title('Labeld_Frame')

label_entry = LabelEntry(app_win, 'Hallo')
label_entry.pack()

app_win.mainloop()
Gruß wuf :wink:
Take it easy Mates!
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

oder besser doch her mit den Objekten. - Ist mir sowieso lieber.

So hier als Objekt und ohne die von Dauerstelle bemängelten **-Magie, also idiomatisches Python, sollte das irgendwo nicht der Fall sein, gebt mir Bescheid:

Code: Alles auswählen

#!/usr/bin/env python
import os
import subprocess
import Tkinter as tkinter
import tkFileDialog

PACK_STYLE = {"expand":True, "fill":"both", "padx":1, "pady":1}

class FileOpener(tkinter.Frame):

    def __init__(self, master, cnf=()):
        tkinter.Frame.__init__(self, master, cnf)
        self.filename = ""
        self.dialog = tkFileDialog.Open(self)

    def create(self, text="select", dialog_options=()):
        button_options = {"text" : text.title(),
                          "command" : lambda: self.filedialog(dialog_options)}
        self.button = tkinter.Button(self, button_options)
        self.button.pack(PACK_STYLE)

    def filedialog(self, options=()):
        self.dialog.options = options
        self.filename = self.dialog.show()
        

def print_(exe_name, dat_name):
    print(exe_name, dat_name)
   
if __name__ == "__main__":
    path_to_exe = "D:\\User\\bin\Programme\\TXpert"
    path_to_dat = "D:\\Scripting-Unterlagen\\Python\\Skripte\\Beispiel_" \
                  "Drosselpunkt\\T5422_Buchmann_Rinnthal\\Test-Rechnungen"
   
    root = tkinter.Tk()
    root.title("tw0070")
    
    exe = FileOpener(root)
    exe_title = "W\xe4hle tw0070-Version"
    exe_options = {"initialdir" : path_to_exe,
                   "filetypes" : [("executable files", ".exe"),
                                  ("all files", ".*")],
                   "title" : exe_title}
    exe.create(exe_title, exe_options)
    exe.pack(PACK_STYLE)
    
    dat = FileOpener(root)
    dat_title = "W\xe4hle tw0070-Eingabedatei"
    dat_options = {"initialdir" : path_to_dat,
                   "filetypes" : [('data', '.dat'), ('all files', '.*')],
                   "title" : dat_title}
    dat.create(dat_title, dat_options)
    dat.pack(PACK_STYLE)

    start_options = {"text" : "Starte Rechnung",
                     "command" : lambda: print_(exe.filename, dat.filename)}
    start = tkinter.Button(root, start_options)
    start.pack(PACK_STYLE)

    root.mainloop()
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Antworten