Tkinter - Hauteur de la barre titre dans une fenêtre

Tkinter - Hauteur de la barre titre dans une fenêtre - Python - Programmation

Marsh Posté le 18-02-2024 à 11:23:06    

Bonjour,
 
L'instruction 'geometry' appliquée à une fenêtre permet de fixer les dimensions 'utilisables' de la fenêtre. A cet espace utilisable s'ajoute la barre de titre. En conséquence, si l'on souhaite occuper toute la surface de l'écran, il faut connaître la hauteur de la barre de titre. Toutes mes recherches sur le sujet sont restées vaines.
 
Autrement dit: comment connaître la dimension d'une fenêtre, barre de titre comprise ?
 
Quelqu'un a-t-il une idée ?
 
Merci d'avance de votre aide.
 
Caplande

Reply

Marsh Posté le 18-02-2024 à 11:23:06   

Reply

Marsh Posté le 18-02-2024 à 13:26:38    

Bonjour.  
Et si tu nous mettais un bout de code ?
Merci


---------------
http://www.ypikay.com
Reply

Marsh Posté le 18-02-2024 à 13:55:45    

L'exemple que je viens de concocter (ci-dessous) semble montrer le contraire de ce que je pensais dans dans mon précédent message. En effet, lorsque je fais varier yl au delà de 990, la ligne rouge n'est plus visible ce qui conduit à penser que dans la hauteur 1024, est bien incluse la hauteur de la barre titre.
Du coup, je ne sais plus...1280 x 1024 est-elle la surface disponible pour disposer les widgets ou bien faut-il retirer la hauteur de la barre titre de cette surface. Mais dans ce dernier cas, peut on extraire par un moyen qcq cette grandeur afin de la déduire ?
 
Où est la vérité ?
 
Probablement avez-vous une réponse.
 
Caplande
 

Code :
  1. from tkinter import *
  2. root = Tk()
  3. dim_ecran = (root.winfo_screenwidth(),root.winfo_screenheight()) # Dans mon cas (1280, 1024)
  4. print(1,dim_ecran)
  5. root.geometry(str(dim_ecran[0])+'x'+str(dim_ecran[1]))
  6. canevas = Canvas(root,width=dim_ecran[0],height=dim_ecran[1])
  7. canevas.place(x=0,y=0)
  8. yl= 990
  9. canevas.create_line(0,yl,1280,yl,fill='red',width=1)
  10. root.mainloop()

Reply

Marsh Posté le 19-02-2024 à 10:05:19    

Salut.
 
Sur mon système, si je fais une simple fenêtre de 400 × 400, que je mesure la taille de la fenêtre, j'obtiens 406 × 428 en taille totale de fenêtre, donc c'est la zone interne qui mesure 400 de côté, logique.
 
Le truc, est qu'en réalité la fenêtre ne respecte pas la dimension définie dans le geometry si on excède la taille de l'écran (tout du moins sur mon système).
 
La solution est d'utiliser un minsize ainsi qu'un resizable à False si souhait que la dimension fenêtre ne soit pas modifiable.
 

Code :
  1. import tkinter as tk
  2. window = tk.Tk()
  3. window_size = (
  4.     window.winfo_screenwidth(),
  5.     window.winfo_screenheight()
  6. )
  7. window.geometry('+0+0')
  8. window.minsize(width=window_size[0], height=window_size[1])
  9. canvas = tk.Canvas(
  10.     window, width=window_size[0],
  11.     height=window_size[1], bg='black',
  12. )
  13. canvas.grid()
  14. canvas.create_line(
  15.     0, window_size[1] - 1,
  16.     window_size[0], window_size[1] - 1,
  17.     fill='yellow',
  18. )
  19. window.mainloop()


 
Qui m'affiche bien une ligne jaune en bas de l'écran.


---------------
La connerie est la décontraction de l'intelligence.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed