如何将tkinter窗口设置为常量

时间:2016-04-12 14:14:08

标签: python python-3.x tkinter

我正在用tkinter编写一个小游戏,简单地说,我被卡住了。

我有一个开始菜单,其中有两个按钮和一个标签。

如果我只是创建框架一切都很好,它的大小为500x500像素

我希望在创建按钮和labe时不改变背景,但无论我做什么,它都会调整大小。这是我的代码:

import tkinter as tk

def startgame():
    pass

mw = tk.Tk()              #Here I tried (1)
mw.title('The game')

back = tk.Frame(master=mw, width=500, height=500, bg='black')
back.pack()

go = tk.Button(master=back, text='Start Game', bg='black', fg='red',
                     command=lambda:startgame()).pack()
close = tk.Button(master=back, text='Quit', bg='black', fg='red',
                     command=lambda:quit()).pack()
info = tk.Label(master=back, text='Made by me!', bg='red',
                         fg='black').pack()

mw.mainloop()

我在stackoverflow上搜索并没有得到任何有用的东西! 我发现只有一个类似于我的问题,但答案没有用。我试过这个:

(1)mw.resizable(width = False,height = False)

我无法想象这是什么问题,我真的很绝望。

5 个答案:

答案 0 :(得分:24)

您可以通过设置io.connect()

来关闭pack_propagate

在这里关闭pack_propagate(0)基本上说不要让框架内的小部件控制它的大小。因此,您已将其宽度和高度设置为500.关闭传播静止图像允许它为此尺寸,而小部件不会更改框架的大小以填充其各自的宽度/高度,这将是会发生的情况通常

要关闭调整根窗口的大小,您可以设置pack_propagate,其中分别允许root.resizable(0, 0)x方向调整大小。

要将maxsize设置为窗口,如另一个答案中所述,您可以设置y属性或maxsize,但您可以设置根窗口的几何图形,然后关闭调整大小。更灵活的imo。

每当您在小部件上设置minsizegrid时,它都会返回pack。因此,如果您希望能够保留对窗口小部件对象的引用,则不应将变量设置为您在其上调用Nonegrid的窗口小部件。您应该将变量设置为窗口小部件pack,然后在窗口小部件上调用Widget(master, ....)pack

grid

答案 1 :(得分:6)

如果您希望整个窗口具有特定大小,则可以使用geometry命令为其指定所需大小。这就是你真正需要做的一切。

例如:

mw.geometry("500x500")

尽管如此,您还需要确保窗口中的窗口小部件正确调整大小,因此请更改将帧添加到此处的方式:

back.pack(fill="both", expand=True)

答案 2 :(得分:2)

您的问题有两种解决方案:

  1. 您可以设置固定大小的Tkinter窗口; mw.geometry('500x500')

             OR
    
  2. 自动调整框架的大小; back.place(x = 0, y = 0, relwidth = 1, relheight = 1)

  3. *应使用第二个选项代替back.pack()

答案 3 :(得分:0)

尝试parent_window.maxsize(x,x);设置最大尺寸。即使你设置背景等,它也不应该变大。

编辑:同时使用parent_window.minsize(x,x)将其设置为常量!

答案 4 :(得分:0)

这是最简单的方法。

import tkinter as tk

root = tk.Tk()

root.geometry('200x200')
root.resizable(width=0, height=0)

root.mainloop()

我认为没有什么可指定的。 很简单。