我正在用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)
我无法想象这是什么问题,我真的很绝望。
答案 0 :(得分:24)
您可以通过设置io.connect()
pack_propagate
在这里关闭pack_propagate(0)
基本上说不要让框架内的小部件控制它的大小。因此,您已将其宽度和高度设置为500.关闭传播静止图像允许它为此尺寸,而小部件不会更改框架的大小以填充其各自的宽度/高度,这将是会发生的情况通常
要关闭调整根窗口的大小,您可以设置pack_propagate
,其中分别允许root.resizable(0, 0)
和x
方向调整大小。
要将maxsize设置为窗口,如另一个答案中所述,您可以设置y
属性或maxsize
,但您可以设置根窗口的几何图形,然后关闭调整大小。更灵活的imo。
每当您在小部件上设置minsize
或grid
时,它都会返回pack
。因此,如果您希望能够保留对窗口小部件对象的引用,则不应将变量设置为您在其上调用None
或grid
的窗口小部件。您应该将变量设置为窗口小部件pack
,然后在窗口小部件上调用Widget(master, ....)
或pack
。
grid
答案 1 :(得分:6)
如果您希望整个窗口具有特定大小,则可以使用geometry
命令为其指定所需大小。这就是你真正需要做的一切。
例如:
mw.geometry("500x500")
尽管如此,您还需要确保窗口中的窗口小部件正确调整大小,因此请更改将帧添加到此处的方式:
back.pack(fill="both", expand=True)
答案 2 :(得分:2)
您的问题有两种解决方案:
您可以设置固定大小的Tkinter窗口; mw.geometry('500x500')
OR
自动调整框架的大小; back.place(x = 0, y = 0, relwidth = 1, relheight = 1)
*应使用第二个选项代替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()
我认为没有什么可指定的。 很简单。