utilisant tkinter depuis peu je suis confronté à un problème de background, tout fonctionne bien mais systématiquement le fond de mes fenêtres n'est pas adapté aux widgets que je crée. Cela ne se produit que sur debian, j'ai essayé sur Lubuntu, Windows 10 et Manjaro, et le rendu est bon partout sauf sur debian.
A vrai dire c'est possible d'uniformisé les couleurs mais le rendu est dégueu. Sans parler du fait que, sur des gros utilitaires ce sera assez lourd en code à la fin.
Avec des images ce sera mieux.
Tout d'abord le code de mon exemple (c'est juste un code inutile avec plusieurs cas de figures pour montrer le problème):
Code : Tout sélectionner
import tkinter as tk
from tkinter import ttk
root = tk.Tk()
info_importante = ttk.Label(root, text="Cheat Yourself", padding=20)
info_importante.configure(font="Courier")
info_importante.pack()
def new():
pisse = tk.Tk()
info_moins_importante = ttk.Label(pisse, text="Ceci est une nouvelle fenêtre", padding=40)
info_moins_importante.pack()
pisse.mainloop()
ouv = ttk.Button(root, text="Vas-y clique là", command=new)
ouv.pack()
bout = ttk.Button(root, text="Quitter", command=root.destroy)
bout.pack()
root.mainloop()


Si j’agrandis la fenêtre :

Manjaro, avec les fenêtres agrandit :

Windows avec les fenêtres agrandit :

Donc il est possible de choisir un background quand on crée une fenêtre avec Tk() et pour tout les widgets, mais c'est assez contraignant, le rendu n'est pas merveilleux (je suis bien gentil) et je ne vois pas pourquoi on ne devrait faire ça qu'avec Debian. On peut aussi utiliser fill et expand partout mais là ça rajoute beaucoup de code, avec un résultat digne du loto quand on utilise de plus en plus de widgets, et encore une fois, ce serait seulement pour Debian. Avec grid le problème est le même.
J'aimerai savoir s'il existe une solution simple à ce problème, un peu comme pour la compatibilité DPI sur W10*
J'ai pas mal cherché, en anglais et français et la réponse existe peut être ailleurs en anglais et si c'est le cas je n'ai pas su trouver les bons mots pour chercher.
Sur une autre machine avec debian 10.6 j'ai le même rendu.
Est-ce que quelqu'un à une ou des solutions à proposer ?
DPI sur windows 10 :
Code : Tout sélectionner
try:
from ctypes import windll
windll.shcore.SetProcessDpiAwareness(1)
except:
pass
EDIT 09/11/20 à 15h33 : J'ai oublié de préciser, Python 3.7.3 et Tkinter 8.6
EDIT² 09/11/20 à 15h45 : J'ai pris un exemple sans Frame, mais avec Frame on résout le problème tout en créant d'autres qu'il faut régler, alors que sur n'importe quel autre système c'est naturel