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).
Windows10-64bit Python3.7 Pyinstaller 3.6
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.
(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.
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.
(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.
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.
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