Différence de comportement du cadre transparent réalisé avec tkinter dans pyinstaller [Python]

Auparavant, j'ai présenté comment créer un cadre avec un fond transparent dans Créer un cadre avec un fond transparent avec tkinter [Python]. Ce cadre transparent, mais avec $ python hoge.py (ci-après appelé $ python) J'introduirai la différence de comportement lors de l'exécution du fichier exe avec $ pyinstaller hoge.py --onefile (ci-après appelé $ pyinstaller).

environnement

Windows10-64bit Python3.7 Pyinstaller 3.6

Qu'est-ce que pyinstaller

Une bibliothèque qui vous permet de créer un fichier exe pour Windows en exécutant simplement une simple commande.

$pip install pyinstaller

Peut être installé avec. Cependant, vous devez vérifier le Site officiel pour voir s'il correspond à la version de python que vous utilisez. J'ai essayé de l'exécuter avec Python 3.8 un certain jour de mars 2020, mais il n'était pas pris en charge, donc je n'ai pas pu sortir le fichier exe avec succès. Un fichier exe est créé avec $ pyinstaller hoge.py, mais il est pratique d'ajouter l'option --onefile car il sera combiné en un seul fichier exe.

Différence de comportement

(Ici, «clic» fait référence à tous les clics gauche, central et droit, sauf indication contraire.) En gros, cela a la même apparence, mais si vous utilisez $ python, cliquez sur la partie transparente et cliquez sur la fenêtre sous __Frame __. D'un autre côté, si vous utilisez $ pyinstaller, même si vous cliquez sur la partie transparente, vous pouvez simplement cliquer sur __the Frame et cela n'interférera pas avec la fenêtre ci-dessous. __ L'exemple de code et les résultats de l'exécution sont indiqués ci-dessous.

Exemple de code

from tkinter import ttk
import tkinter

def lclick(self):
    print("lclick")
    label=ttk.Label(master=root,font=("Meilio",30),text="■ Ne devenez pas plus mince ... ■",foreground="red",background="green")
    label.bind("<1>",lclick)
    label.place(x=0,y=150)

root=tkinter.Tk()
root.wm_attributes("-transparentcolor", "snow")
ttk.Style().configure("TP.TFrame", background="snow")
f=ttk.Frame(master=root,style="TP.TFrame",width="400",height="300")
f.pack()

label=ttk.Label(master=root,font=("Meilio",30),text="■ Ne maigrissez pas ...",foreground="red",background="snow")
label.bind("<1>",lclick)
label.place(x=0,y=150)
root.mainloop()

C'est un programme qui rend l'arrière-plan de l'étiquette verte lorsque vous cliquez sur l'étiquette.

Résultat d'exécution

compare.gif (La gauche est le résultat de l'exécution du fichier exe converti avec $ python et la droite est $ pyinstaller, et le code est le même pour les deux)



C'est une grande différence. L'exemple de Envoi de résultats de recherche Twitter comme un certain site vidéo [python] est facile à comprendre. Cela lancera une étiquette qui rendra le fond transparent sur la fenêtre transparente, et pour cette étiquette label.bind (" <1> ", leftClickFunction), label.bind (" <3> ", rightClickFunction) ʻest un programme qui exécute une fonction lorsqu'on clique dessus. Si vous utilisez $ pyinstaller`, la fonction lorsque vous cliquez correctement est exécutée comme indiqué dans le GIF ci-dessous. pytoninstallerjkpy.gif

D'autre part, si vous le définissez sur $ python, vous ne pouvez pas cliquer sur étiquette, vous ne pouvez donc pas exécuter la fonction définie dans bind comme indiqué ci-dessous, et vous pouvez voir que la fenêtre arrière est sélectionnée en bleu par D & D. pytonjkpy.gif

Résumé

Dans l'environnement ci-dessus, si vous cliquez sur un cadre transparent dans $ python hoge.py, vous cliquerez sur la fenêtre sous le cadre, vous ne pourrez donc pas cliquer sur le libellé sur le cadre. Cependant, il peut être résolu en le convertissant en exe, donc je veux l'utiliser correctement en fonction de l'objectif. Je n'ai pas pu cliquer sur label et il a été écrasé pendant n heures ()

Recommended Posts

Différence de comportement du cadre transparent réalisé avec tkinter dans pyinstaller [Python]
Créer un cadre avec un arrière-plan transparent avec tkinter [Python]
J'ai fait un jeu de frappe simple avec tkinter de Python
J'ai fait un jeu de puzzle (comme) avec Tkinter of Python
Numer0n avec des objets fabriqués avec Python
Vérifiez le comportement du destroyer en Python
Outil de rognage d'image GUI réalisé avec Python + Tkinter
[Python] J'ai créé un téléchargeur Youtube avec Tkinter.
Comment utiliser tkinter avec python dans pyenv
Projet Euler # 6 "Différence de somme des carrés" en Python
Bases de l'écran d'entrée / sortie en utilisant tkinter en python3
Coordonnées les plus à droite de l'étiquette faite avec tkinter
[python] comportement d'argmax
Différence entre Ruby et Python en termes de variables
[python] Calcul des mois et des années de différence de date / heure
Une introduction au logiciel d'interface graphique de la plate-forme de classe fait avec Python / Tkinter! (Et de nombreux Try and Error)! (Au milieu de l'écriture)
Essayez de gratter les données COVID-19 Tokyo avec Python
Autoriser l'installation des outils de ligne de commande en Python
Module Python num2words Différence de comportement entre l'anglais et le russe
Calculez des millions de chiffres dans la racine carrée de 2 avec python
[Pour les débutants] Résumé de l'entrée standard en Python (avec explication)
[Homologie] Comptez le nombre de trous dans les données avec Python
Comparaison de la gestion des trames de données en Python (pandas), R, Pig
Grattage au sélénium en Python
Exploitez LibreOffice avec Python
Grattage avec chromedriver en python
Trouver des erreurs en Python
Débogage avec pdb en Python
J'ai fait un blackjack avec du python!
Gérer les sons en Python
Grattage avec du sélénium en Python
Jugement d'équivalence d'objet en Python
Grattage avec Tor en Python
Tweet avec image en Python
Combiné avec ordinal en Python
Exécuter Label avec tkinter [Python]
Implémentation du tri rapide en Python
J'ai fait un blackjack avec Python.
Othello fait avec python (comme GUI)
J'ai créé wordcloud avec Python.
Jeu de vie avec Python [je l'ai fait] (sur terminal et Tkinter)
Activé pour convertir PNG en JPG avec Pillow of Python
tkinter n'a pas pu être utilisé avec python installé par pyenv de anyenv
Système de notation IPynb réalisé avec TA d'introduction à la programmation (Python)
Exportez le contenu de ~ .xlsx dans le dossier en HTML avec Python
J'ai créé beaucoup de fichiers pour la connexion RDP avec Python
Visualisez la fréquence des occurrences de mots dans les phrases avec Word Cloud. [Python]
Convertir un script Python écrit dans PyTorch en exe avec PyInstaller
Obtenez une liste de fichiers dans un dossier avec python sans chemin
Reconnaissance des nombres dans les images avec Python
Manipulation des pixels d'image en Python
[Python] Afficher plusieurs fenêtres avec Tkinter
Tester avec des nombres aléatoires en Python
Bases de SNS Python faites avec Flask
Différence entre list () et [] en Python
Différence entre == et est en python
GOTO en Python avec Sublime Text 3
Travailler avec LibreOffice en Python: import
Comportement lors de la liste dans Python heapq