web-dev-qa-db-fra.com

Comment puis-je empêcher le redimensionnement d'une fenêtre avec tkinter?

J'ai un programme qui crée une fenêtre dans laquelle un message est affiché en fonction d'une case à cocher.

Comment puis-je rendre la taille de la fenêtre constante lorsque le message est affiché et que le message n'est pas affiché?

from Tkinter import *

class App:
    def __init__(self,master):
        self.var = IntVar()
        frame = Frame(master)
        frame.grid()
        f2 = Frame(master,width=200,height=100)
        f2.grid(row=0,column=1)
        button = Checkbutton(frame,text='show',variable=self.var,command=self.fx)
        button.grid(row=0,column=0)
        msg2="""I feel bound to give them full satisfaction on this point"""
        self.v= Message(f2,text=msg2)
    def fx(self):
        if self.var.get():
            self.v.grid(column=1,row=0,sticky=N)
        else:
            self.v.grid_remove()

top = Tk()
app = App(top)            
top.mainloop()
55
user2332665

Ce code crée une fenêtre avec les conditions dans lesquelles l'utilisateur ne peut pas modifier les dimensions de la fenêtre Tk(), et désactive également le bouton Agrandir.

import tkinter as tk

root = tk.Tk()
root.resizable(width=False, height=False)
root.mainloop()

Dans le programme, vous pouvez modifier les dimensions de la fenêtre avec la réponse de @ Carpetsmoker ou en procédant comme suit:

root.geometry('{}x{}'.format(<widthpixels>, <heightpixels>))

Il devrait être assez facile pour vous d’implémenter cela dans votre code. :)

103
Alex Thornton

Vous pouvez utiliser minsize et maxsize pour définir une taille minimale et maximale, par exemple:

def __init__(self,master):
    master.minsize(width=666, height=666)
    master.maxsize(width=666, height=666)

Donnera à votre fenêtre une largeur et une hauteur fixes de 666 pixels.

Ou, simplement en utilisant minsize

def __init__(self,master):
    master.minsize(width=666, height=666)

Assurez-vous que votre fenêtre est toujours au moins 666 pixels de large, mais l'utilisateur peut toujours agrandir la fenêtre.

32
Martin Tournoij

Vous pouvez utiliser:

parentWindow.maxsize(#,#);
parentWindow.minsize(x,x);

Au bas de votre code pour définir la taille de la fenêtre fixe.

4
Pamal Mangat

Le code ci-dessous fixera root = tk.Tk() à sa taille avant de s'appeler:

root.resizable(False, False)
1
Nae
Traceback (most recent call last):
  File "tkwindowwithlabel5.py", line 23, in <module>
    main()
  File "tkwindowwithlabel5.py", line 16, in main
    window.resizeable(width = True, height =True)
  File "/usr/lib/python3.4/tkinter/__init__.py", line 1935, in                
  __getattr__
    return getattr(self.tk, attr)
AttributeError: 'tkapp' object has no attribute 'resizeable'

est ce que vous obtiendrez avec la première réponse. tk supporte les tailles min et max

window.minsize(width = X, height = x)
window.maxsize(width = X, height = x)

je l'ai compris mais j'essayais juste le premier. en utilisant python3 avec tk.

0
nate

Ceci est une variante d'une solution existante déjà fournie ci-dessus:

import tkinter as tk

root = tk.Tk()
root.resizable(0, 0)
root.mainloop()

L'avantage est que vous tapez moins.

0
Billal Begueradj