Utiliserez-vous Word de Microsoft? Lorsque j'écris un rapport universitaire, lorsque je le soumets au format Word, je lance Word et rédige le rapport. Récemment, j'écris de plus en plus de rapports en utilisant Google Documents ... mais je n'écris pas assez de phrases pour ouvrir Word dans le monde ... Je n'ai pas besoin de lancer un navigateur et d'ouvrir Google Documents ... N'est-ce pas juste un mémo? (Juste moi?) A cette époque, vous souhaitez souvent compter le nombre de caractères ... (Wata ry) C'est pourquoi j'ai créé un compteur de caractères en Python. Pour les personnes occupées, le code source est [ici. ](# 4-Code source)
Mac OS Catalina Python 3.7.6 PySimpleGUI 4.18.2
Quand il s'agit d'implémenter l'interface graphique en Python, je pense que la première chose qui me vient à l'esprit est Tkinter. J'ai pensé à l'implémenter dans Tkinter, mais j'ai pensé que c'était un peu compliqué ... alors j'ai cherché une autre bonne bibliothèque et l'ai trouvée, ** [PySimpleGUI](https: /) /pysimplegui.readthedocs.io/en/latest/) **. Donc, cette fois, nous allons procéder à l'implémentation en utilisant cette bibliothèque.
En tant que fonction dont j'ai personnellement besoin pour le compteur de caractères,
Zone de saisie du nombre de caractères
Bouton de comptage
-Bouton Quit
C'est plutôt bien s'il y en a assez. Les fonctions minimales requises sont suffisantes. Parce que je bouge juste un peu. Nous mettrons en œuvre ces trois.
Tout d'abord, installez l'interface graphique PySimple. Si vous ne l'avez pas encore installé, dans le terminal
pip install pysimplegui
Entrer.
Une fois l'installation terminée, nous commencerons à l'implémenter immédiatement.
Ce que j'ai importé cette fois
re
PySimpleGUI as sg
Il y en a deux.
Définissez le thème au début. J'ai choisi `` DarkAmber '' parce que j'aime son apparence. Cette zone est votre choix. Pour plus d'informations, rendez-vous sur ici.
wordcounter.py
import PySimpleGUI as sg
import re
sg.theme('DarmAmber')
Ceci termine les paramètres du thème. Ensuite, considérez la disposition de l'interface graphique. La disposition est
layout = []
Il peut être défini librement sous la forme d'un tableau. je
wordcounter.py
import PySimpleGUI as sg
import re
sg.theme('DarkAmber')
layout = [
[sg.Text('Word Counter')],
[sg.Multiline((), size=(70, 30))],
[sg.Submit(button_text='Count', size=(5, 1)), sg.Button('Quit', size=(5, 1))],
[sg.Button('Delete', size=(5, 1)), sg.Button('Save', size=(5, 1))]
]
Je l'ai fait comme ça. Alors ça ressemble à ça.
N'est-ce pas assez intuitif d'écrire?
Grosso modo,
--``` Texte ()
affiche la zone de texte sur une ligne
Multiline () ''
affiche une zone de texte multiligneSoumettre () '' affichera le bouton --``` Button ()
`affiche le boutonsize=()
Vous permet de spécifier la taille de l'élément. 1=Il peut être compté avec un caractère, donc dans mon casmultiline(), size=(70, 30)
Ensuite, la taille de la zone de texte estVertical 70 caractères x horizontal 30 caractèresC'est réglé comme ça.
Pour être honnête, je ne comprends pas vraiment la différence entre Soumettre () '' et
Bouton () '', mais cette fois ça marche bien donc je vais le laisser tel quel ...
Lorsque la mise en page est terminée, le reste définit le mouvement lorsque le bouton est enfoncé. Et avant cela, affichons la mise en page créée.
wordcounter.py
import PySimpleGUI as sg
import re
sg.theme('DarkAmber')
layout = [
[sg.Text('Word Counter')],
[sg.Multiline((), size=(70, 30))],
[sg.Submit(button_text='Count', size=(5, 1)), sg.Button('Quit', size=(5, 1))],
[sg.Button('Delete', size=(5, 1)), sg.Button('Save', size=(5, 1))]
]
window = sg.Window('Word Counter', layout)
#réduction
window.close()
J'ai ajouté
window = sg.Window('Word Counter', layout)
Quand
window.close()
est. Le reste du programme est écrit entre les deux.
while
Je vais le mettre en œuvre avec une déclaration.
wordcounter.py
#réduction
while True:
event, values = window.read()
if event is None:
print('No words')
break
if event == 'Count':
show_message = len(values[0]) - 1
print(show_message)
sg.popup('Result', show_message)
if event == 'Quit':
break
if event == 'Delete':
sg.PopupYesNo('Are you really?')
if 'Yes':
values[0] = re.sub()
Ci-dessous, «si» et les suivants sont décrits individuellement.
if event is None:
print('No words')
break
Décrit le mouvement lorsque le bouton x est enfoncé.
if event == 'Count':
show_message = len(values[0]) - 1
print(show_message)
sg.popup('Result', show_message)
C'est le principal. Attribuez la valeur de la zone de texte à la variable
show_messagecomme comptée par` `len ()` ``. Dans PySimpleGUI, il semble que les valeurs mises dans la zone de texte ou la zone puissent être obtenues par `` `values [] ''. Il semble y avoir un autre moyen.
len(values[0]) - 1```La raison en est qu'après l'avoir vérifié plusieurs fois, pour une raison quelconque, un nombre de plus que le nombre de caractères saisis dans le texte est affiché.-La queue du livre est ajustée avec 1. Pourquoi? Quoi qu'il en soit, je suis content que ça marche parce que ça marche. Si vous connaissez une meilleure façon d'écrire, veuillez nous en informer.
if event == 'Quit':
break
Tel quel. Appuyez sur `` Quitter '' pour quitter le programme.
if event == 'Delete':
sg.PopupYesNo('Are you really?')
if 'Yes':
values[0] = re.sub()
Je n'ai pas encore implémenté cela, mais je souhaite supprimer toutes les chaînes de la zone de texte lorsque j'appuie sur `` Supprimer '' ... mais cela ne fonctionne pas. Je pense que je vais utiliser une expression régulière pour l'effacer, mais je pense qu'il y a une meilleure façon ... mais je ne peux pas y penser et la laisser telle quelle. Eh bien, ce n'est pas grave si vous n'avez pas cette fonctionnalité, mais j'aimerais la rendre encore plus pratique ... S'il vous plaît, aidez tous ceux qui la connaissent.
Cela complète l'outil avec les fonctionnalités que je voulais.
Voici le code source.
<détails>
wordcounter.py
import PySimpleGUI as sg
import re
sg.theme('DarkAmber')
layout = [
[sg.Text('Word Counter')],
[sg.Multiline((), size=(70, 30))],
[sg.Submit(button_text='Count', size=(5, 1)), sg.Button('Quit', size=(5, 1))],
[sg.Button('Delete', size=(5, 1)), sg.Button('Save', size=(5, 1))]
]
window = sg.Window('Word Counter', layout)
while True:
event, values = window.read()
if event is None:
print('No words')
break
if event == 'Count':
show_message = len(values[0]) - 1
print(show_message)
sg.popup('Result', show_message)
if event == 'Quit':
break
if event == 'Delete':
sg.PopupYesNo('Are you really?')
if 'Yes':
values[0] = re.sub()
window.close()
J'ai pu créer un compteur de personnage de cette manière. Il existe de nombreux outils similaires sans avoir à écrire du code, mais il serait intéressant de s'amuser pour créer son propre outil, n'est-ce pas? J'y suis assez attaché et je l'utilise relativement (rires) Il ne prend pas en charge la fonction de sauvegarde ou la sortie, et il s'agit d'un substitut utilisé uniquement pour copier et coller la chaîne de caractères et déterminer le nombre de caractères maintenant. Je pense que ce sera plus pratique si diverses autres fonctions sont ajoutées. Merci d'avoir lu jusqu'ici.
Si vous utilisez Tkinter, essayez d'utiliser PySimpleGUI J'ai touché à la bibliothèque d'interface graphique Python "PySimpleGUI" PySimpleGUI PySimpleGUI Cookbook Présentation de l'interface graphique My Boom PySimple Utilisation de base de l'interface graphique PySimple
Recommended Posts