J'ai toutes les bibliothèques écrites dans TCL. Je veux créer une interface graphique à Python qui aura peu de boutons et d'autres options. Dans le shell de démarrage TCL s'ouvrira. Lorsque je cliquerai sur les boutons, les commandes respectives seront exécutées sur la coque TCL. P>
est-il possible de tirer des commandes sur la même coquille de TCL sans fermer la coque TCL. P>
J'ai recherché Google et Recherche Tkniter CODE> Module en Python, mais il ouvrira la coque TCL à chaque fois que je dois exécuter la commande. P>
3 Réponses :
Ce problème peut être résolu en utilisant PEXPEPT
PEXPECT est un module Python pour accumuler des applications enfants et contrôler eux automatiquement. PEXPECT peut être utilisé pour automatiser les applications interactives tels que SSH, FTP, PASSWD, TELNET, etc. Il peut être utilisé pour automatiser la configuration Scripts pour la duplication des installations de packages logiciels sur différents serveurs. Ce Peut être utilisé pour les tests de logiciels automatisés. PEXPECT est dans l'esprit de Don LIBES Attends, mais PEXPECT est pur python. Autres modules d'attente de type pour Python exiger que TCL et attendre ou nécessiter des extensions C puissent être compilées. PEXPECT NE PAS Utilisez des extensions C, attendre ou TCL. Il devrait fonctionner sur n'importe quelle plate-forme qui supporte Le module standard Python PTY. L'interface PEXPECT est axée sur la facilité d'utilisation afin que des tâches simples sont faciles. p> blockQquote>
Exemple d'utilisation prise directement à partir du site Web PEXPPEPT P>
child = pexpect.spawn('scp foo myname@host.example.com:.') child.expect ('Password:') child.sendline (mypassword)
Le questionneur dit qu'il a déjà écrit des bibliothèques dans TCL qu'il a besoin d'appeler de Python. Attendez-vous, la fonctionnalité de style n'est pas pertinente ici.
Oui, c'est vrai, mais je pense que cela peut être accompli en associant les événements générés sur un bouton sur un bouton de l'interface graphique Python avec des déclarations.
S'il vous plaît développer dessus s'il y a quelque chose que je manque ici ici
Vous pouvez certainement utiliser Tkinter pour exécuter une série de commandes dans le même interpréteur TCL: - Ici, la variable msg est définie dans une commande et sa valeur est utilisée dans des commandes ultérieures, Ce qui ne fonctionnerait pas si nous créions un nouvel interprète pour chaque commandement.
Si vous ne voulez pas que la fenêtre TK soit créée, il suffit d'exécuter Si cela ne le fait pas Répondez à votre question que vous feriez mieux d'expliquer ce que vous avez besoin d'autre que vous avez besoin: -) p> p> root.tk.eval ("wm se retirer") code> pour le masquer. P>
Fait amusant: il est possible d'utiliser Tkinter sans créer la fenêtre racine. La classe tk code> prend un argument de mot clé nommé
USETK code>. Si vous le définissez sur
FALSE code>, vous obtiendrez un interprète TCL sans TK.
J'ai créé ce programme TCL simple i peut le lancer dans une console p> pgm.tcl code>
from subprocess import Popen, PIPE
p1 = Popen( ['tclsh', 'pgm.tcl'], stdout=PIPE )
p1out, p1err = p1.communicate()
if p1out is not None: print (p1out)
if p1err is not None: print (p1err)
Cela me semble tort que vous le faites mal si vous faites un nouvel interprète chaque fois que vous souhaitez exécuter une commande. Cela maximise la quantité de frais généraux ridicules.
@Donalfellows Je l'ai lu car il vous demande comment utiliser un seul processus d'interprétation TCL. Par exemple. explicitement ne pas lancer un nouveau processus à chaque fois.
Non, je ne veux pas faire de nouveaux interprètes à chaque fois. Je veux exécuter des commandes sur la même vieille coquille TCL
Je fais ce genre de chose utilisant
os.startfile (cmd) code> où, par exemple,
cmd = 'copier myfile.txt c: \\ utilisateurs \\ \ \ philip \\ bureau' code >