Python GUI programmation à l'aide de glisser-déposer, en incorporant aussi rediriger stdout

Je suis nouveau en programmation & python. J'ai juste développé mon premier script, il prosesses fichier, mais pour le moment uniquement en ligne de commande.

C'est juste un passe-temps pour moi donc, mon travail ne dépend pas de lui 🙂

J'ai passé quelques jours à essayer d'obtenir ma tête autour de python gui développement & en sont venus à la conclusion que je dois être stupide.

J'ai regardé wxpython & Tkinter, & ne pas comprendre non plus, bien que Tkinter, semble être le plus facile des deux. J'ai même regardé wysiwyg outils comme le Boa Contrictor & wxglade. Je n'ai même pas à comprendre comment l'utiliser. Je préfère rester avec mon éditeur & code manuellement de toute façon.

Mon problème est le suivant:

Je voudrais créer une fenêtre de bureau, soit de 1 ou deux objets, en fonction de ce qui fonctionne le mieux. Si seulement un objet, puis une zone de texte d'une certaine sorte, si 2 objets, puis une zone de texte & une image.

Je veux être en mesure de faire glisser le fichier à partir d'un gestionnaire de fichiers & drop sur ma fenêtre de script, c'est juste pour passer les noms de fichiers à mon script.

Que je veux rediriger stdout vers un objet à l'intérieur de ma fenêtre de bureau, de sorte que toutes les sorties du script s'affiche dans la fenêtre du bureau.

Je ne suis pas sûr si un objet peut faire les deux choses ou pas. Si l'on peut que juste une zone de texte suffit, sinon déposer les fichiers sur l'image & redirigés de la production à la zone de texte.

J'ai trouvé le drag & drop des exemples sur le web mais rien qui intègre rediriger stdout, & je n'ai pas réussi à modifier les exemples que je vous ai rencontré.

Si somee nature seule a le temps de montrer comment réaliser ce que je veux & expliquer comment sa fonctionne je greatfully apprécier!

----EDIT ----

J'ai été jouer avec 2 exemples & ont réussi à hacher les 2 ensemble, afin d'obtenir ce que je voulais de travail. Le Code est ci-dessous. Il n'est pas nettoyé encore ( vieux commentaires, etc... ), mais il fonctionne.

#!/usr/bin/python

# The next two lines are not necessary if you installed TkDnd
# in a proper place.

import os
from Tkinter import *
os.environ['TKDND_LIBRARY'] = '/home/clinton/Python/tkdnd2.6/'

import Tkinter
from untested_tkdnd_wrapper import TkDND


class Redir(object):
    # This is what we're using for the redirect, it needs a text box
    def __init__(self, textbox):
        self.textbox = textbox
        self.textbox.config(state=NORMAL)
        self.fileno = sys.stdout.fileno

    def write(self, message):
        # When you set this up as redirect it needs a write method as the
        # stdin/out will be looking to write to somewhere!
        self.textbox.insert(END, str(message))

root = Tkinter.Tk()

dnd = TkDND(root)

textbox = Tkinter.Text()
textbox.pack()

def handle(event):
    event.widget.insert(END, event.data)
    content = textbox.get("0.0",Tkinter.END)
    filename = content.split()

dnd.bindtarget(textbox, handle, 'text/uri-list')

#Set up the redirect 
stdre = Redir(textbox)
# Redirect stdout, stdout is where the standard messages are ouput
sys.stdout = stdre
# Redirect stderr, stderr is where the errors are printed too!
sys.stderr = stdre
# Print hello so we can see the redirect is working!
print "hello"
# Start the application mainloop
root.mainloop()

Exemples sont: python glisser-déposer de l'explorateur de fichiers de tkinter widget de saisie

Et aussi l'exemple fourni aimablement par Noelkd.

Pour que ce code fonctionne, vous devez créer l'emballage de premier exemple. Aussi, actuellement, le code est simplement l'affichage de fichier déposé dans la fenêtre, cependant variable est en place pour être passé sur le script qui s'exécute en arrière de l'interface gui.

Vous êtes nouveau à la programmation, les nouvelles de python de la programmation, et de nouveau à gui de la programmation, et vous pensez que vous êtes stupide après seulement "quelques jours"? Vous êtes trop dur avec vous-même. Il faut des années pour être vraiment bon à tous ceux, et au moins quelques semaines (voire des mois) juste pour avoir une compréhension fondamentale si vous êtes véritablement nouveau à la programmation.

OriginalL'auteur Clinton Moffat | 2013-07-17