Bonjour,
Je suis en train de faire un petit programme à la fois pour découvrir Python, et pour permettre à ma fille de 2 ans de jouer avec le clavier de mon ordi sans pour autant mettre le bazar sur mon bureau (et je vous assure que ça va vite !!!). Un peu dans le style du jeu gamine sous linux, mais avec le clavier plutôt que la souris.
Bref, les contraintes : je dois faire une appli plein écran, sans bord de fenêtre ni décoration, et l'appui sur une touche (j'ai pris Echap mais on s'en fout, enfin pas une lettre quand même...) pour quitter. Je suis arrivé au code suivant qui fonctionne mais il reste un petit soucis : il faut cliquer dans le widget Text pour pouvoir écrire dedans, même avec l'instruction zoneText.focus_set() !!
Je pense que le problème vient de l'utilisation de l'instruction top.overrideredirect(1) puisque si je commente la ligne, la zone de texte a bien le focus. Mais je ne peux pas la supprimer, sinon la barre de menu et la barre des tâches sont visibles !!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #!/usr/bin/python # -*- coding: iso-8859-15 -*- import Tkinter as Tk root = Tk.Tk() # function used to close application def ferme(event): root.destroy() # creation of the main window # seems necessary because the use of "root.overrideredirect(1)" AND "root.bind_all()" does not work together ?? # so the main "root" window exist but it is hidden by the fullscreened "top" window. def affiche(): top=Tk.Toplevel() top.overrideredirect(1) #no title nor border for the window top.geometry(str(top.winfo_screenwidth())+"x"+str(top.winfo_screenheight())+"+0+0") # fullscreen ! lEscape=Tk.Label(top, text="Hit 'ESC' to close the program") lEscape.pack(side='bottom') cadre = Tk.Frame(top, width =1024, height =768, bg="light yellow") cadre.pack(pady=10,side='bottom') cadre.pack_propagate(0) lInstruction=Tk.Label(cadre, text='Clic in the box below to begin', bg='light yellow',pady=2) lInstruction.pack(side='top') zoneText=Tk.Text(cadre,fg='blue',font='Verdana 40 bold') zoneText.pack(pady=10,padx=10,fill='both', expand='yes') zoneText.focus_set() affiche() root.bind_all('<Escape>',ferme) #used to close application by clicking the escape key root.mainloop()
Si vous avez une solution, et une explication, je suis preneur car la je tourne en rond Même si ce n'est pas très compliqué de cliquer dans la zone de texte, si je peux simplifier le truc je préfèrerai. Je ne sais pas si c'est utile, mais je suis sous Ubuntu.
Merci d'avance de votre aide.
---
Christophe
Partager