J'essaie de faire une chose contrôlée par une interface graphique Python Shell.
La seule chose est, je ne sais pas comment faire toute cette chose d'entrée / sortie. Je veux juste pouvoir taper une entrée, exécuter la commande python et donner la sortie de la commande python. Je sais que IDLE est fait dans Tkinter, donc il utilise les widgets?
C'est littéralement juste une chose "type d'entrée, afficher la sortie".
J'ai essayé de le rechercher, mais il semble que la plupart des résultats concernent la ligne de commande, ce qui n'est pas ce que je recherche. La seule autre question qui était exactement comme la mienne n'était pas non plus celle que j'avais en tête. J'ai également essayé de fouiller le code source d'IDLE mais je n'ai pas trouvé ce que je cherchais.
J'ai trouvé des réponses qui fonctionnent pour Linux mais je suis sur Windows 10 ...
J'ai besoin que le "shell" soit dans Tkinter car d'un côté de l'écran il y aura quelque chose d'autre qui est connecté aux sorties de commande.
Est-ce que quelqu'un connaît les widgets utilisés pour créer un shell Python très simple?
la source
Réponses:
Shell Python simple / Terminal / Invite de commandes
type input
,show output
". ************************Le script python donné ci-dessus a la hiérarchie suivante comme indiqué;
Flux de travail:
Le flux de travail de base pour le code ci-dessus est donné comme suit;
def welcome_note():...
Inclut l'étiquette qui s'affichera en dehors du corps du texte.def get_text(self):...
Effectue deux opérations; ** Obtenez le texte du corps du texte ** & ** Définissez la sortie dans la zone de saisie **.def store_commands(self, command):...
Utilisez pour stocker la variable dans un fichier.def get_stored_commands(self):
... Obtenez une variable stockée dans un fichier.def check_if_file_empty():
... Vérifiez la taille du fichier.def run_commands(self, command):...
Cette méthode agit comme un compilateur python qui prend les commandes, effectue le traitement et produit une sortie pour la commande donnée. Pour exécuter des commandes, je recommanderais d'utilisersubprocess-module
car il fournit des fonctionnalités plus puissantes pour générer de nouveaux processus et récupérer leurs résultats; Courir des commandes de fenêtre à l' aide de python, il inclut diverses bibliothèques intégrées telles que;1. os ( en détail ), 2. sous-processus ( en détail ) etc.
Pour vérifier ce qui est préférable d'utiliser, visitez la référence: le sous - processus-module est préférable à os-module .
def start_terminal(self):...
Cette méthode implique simplement la fonctionnalité pour lancer latkinter
fenêtre de session et afficher la disposition de base pour la fenêtre d'entrée et de sortie.Workaroud:
Ce simple
tkinter GUI based python shell
exécuter des fonctionnalités simples comme invite de commande windows. Pour exécuter des commandes pythondirectly
dans l'invite de commande sans passer dans le terminal python, nous faisons simplement comme;Son résultat serait simple comme;
De même, pour exécuter plusieurs lignes directement à la fois comme indiqué;
Sa sortie serait comme;
Donc, pour utiliser cela
tkinter python shell
;Soit vous pouvez placer la commande en tant que;
ou comme ça;
ou simplement une commande en ligne comme
Vous obtiendrez le même résultat.
la source
input
,output
shell. Il agit comme basiquepython kernel
. Il ne fonctionne que sur celui qui est placé dans le corps du texte . Je n'ai défini aucun tampon ou cache-mémoire pour contenir l'historique des variables. Laissez-moi d'abord vérifier cette exigence dans ce RALENTI!Il s'agit d'un simple shell principalement utilisé
exec()
pour exécuter les instructions python etsubprocess.Popen()
pour exécuter une commande externe:Entrez simplement l'instruction python normale:
Ou entrez une commande shell:
Vous pouvez également utiliser la
Up
touche pour rappeler la dernière commande.Veuillez noter que si vous exécutez une commande système nécessitant une entrée utilisateur, le shell sera figé pendant 5 secondes (délai d'expiration utilisé dans
communicate()
).Vous pouvez modifier la
on_key()
fonction selon vos besoins.Nous vous rappelons également que l'utilisation
exec()
n'est pas une bonne pratique.la source
J'avais implémenté un shell python en utilisant
code.InteractiveConsole
pour exécuter les commandes d'un projet. Ci-dessous est une version simplifiée, bien que toujours assez longue car j'avais écrit des liaisons pour des touches spéciales (comme Return, Tab ...) pour se comporter comme dans la console python. Il est possible d'ajouter plus de fonctionnalités telles que la saisie semi-automatique avec jedi et la mise en évidence de la syntaxe avec pygments.L'idée principale est que j'utilise la
push()
méthode ducode.InteractiveConsole
pour exécuter les commandes. Cette méthode retourneTrue
s'il s'agit d'une commande partielle, par exempledef test(x):
, et j'utilise cette rétroaction pour insérer une...
invite, sinon, la sortie est affichée et une nouvelle>>>
invite est affichée. Je capture la sortie en utilisantcontextlib.redirect_stdout
.Il y a aussi beaucoup de code impliquant des marques et comparant les index car j'empêche l'utilisateur d'insérer du texte dans des commandes précédemment exécutées. L'idée est que j'ai créé une marque «entrée» qui m'indique où se trouve le début de l'invite active et avec
self.compare('insert', '<', 'input')
je peux savoir quand l'utilisateur essaie d'insérer du texte au-dessus de l'invite active.la source