如何使用tkinter防止窗口大小调整?

70

我有一个程序,它会创建一个窗口,并根据复选框显示一条消息。

当消息被显示或未被显示时,我该如何使窗口大小保持恒定?

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()
6个回答

130

这段代码创建了一个窗口,并设置了条件,使得用户无法更改 Tk() 窗口的尺寸,同时禁用了最大化按钮。

import tkinter as tk

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

在程序中,您可以使用 @Carpetsmoker 的答案或通过执行以下操作更改窗口尺寸:

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

你应该很容易将其实现到你的代码中。:)


但是,一旦单击复选框,它的位置就会在窗口中改变。 - mahes

34

你可以使用 minsizemaxsize 来设置最小和最大尺寸,例如:

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

将使您的窗口固定为666像素的宽度和高度。

或者,只需使用minsize

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

将确保您的窗口始终至少达到 666 像素大小,但用户仍然可以扩大窗口。


4

您可以使用以下方法:

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

在您的代码底部设置固定窗口大小。

1
这是现有解决方案的一个变体,已经在上面提供了:
import tkinter as tk

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

优点在于您需要输入的文字较少。

1
以下代码将修复root = tk.Tk()在调用之前的大小:
root.resizable(False, False)

-2
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'

第一个答案会给你这个。 tk支持最小和最大尺寸。

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

我找到了解决方法,但只是尝试第一个。使用Python3和Tk。


2
你试图使用有错别字的第一个答案。root.resizeable(...) 给出了上述错误,请尝试 root.resizable(...) - Nae

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接