如何将Tkinter窗口设置为恒定大小
我正在用tkinter编写一个小游戏,简而言之,我陷入了困境。
我有一种启动菜单,其中有两个按钮和一个标签。
如果我只是创建框架,那么一切都很好,它的大小为500x500像素
我希望创建按钮和标签时背景不会改变,但是无论我做什么,它都会适应大小。这是我的代码:
import tkinter as tkdef 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(宽度= False,高度= False)
我无法想象是什么问题,我真的很绝望。
回答:
您可以pack_propagate
通过设置关闭pack_propagate(0)
pack_propagate
基本上,关闭此处表示不要让框架内的小部件控制其大小。因此,您已将其宽度和高度设置为500。关闭传播静止图像时,可以将其设置为该大小,而无需小部件更改帧的大小以填充其各自的宽度/高度,这通常会发生这种情况。
要关闭根窗口的大小调整,您可以设置root.resizable(0, 0)
,其中分别在x
和y
方向允许调整大小。
如另一个答案中所述,要将窗口的最大尺寸设置为窗口,可以设置maxsize
属性,或者minsize
可以设置根窗口的几何形状,然后关闭调整大小。imo更加灵活。
无论何时设置grid
或pack
在小部件上,它都会返回None
。因此,如果您希望能够保留对窗口小部件对象的引用,则不应在正在调用grid
或pack
在其上的窗口小部件上设置变量。您应该将变量设置为小部件Widget(master,
....),然后调用pack
或grid
在小部件上。
import tkinter as tkdef startgame():
pass
mw = tk.Tk()
#If you have a large number of widgets, like it looks like you will for your
#game you can specify the attributes for all widgets simply like this.
mw.option_add("*Button.Background", "black")
mw.option_add("*Button.Foreground", "red")
mw.title('The game')
#You can set the geometry attribute to change the root windows size
mw.geometry("500x500") #You want the size of the app to be 500x500
mw.resizable(0, 0) #Don't allow resizing in the x or y direction
back = tk.Frame(master=mw,bg='black')
back.pack_propagate(0) #Don't allow the widgets inside to determine the frame's width / height
back.pack(fill=tk.BOTH, expand=1) #Expand the frame to fill the root window
#Changed variables so you don't have these set to None from .pack()
go = tk.Button(master=back, text='Start Game', command=startgame)
go.pack()
close = tk.Button(master=back, text='Quit', command=mw.destroy)
close.pack()
info = tk.Label(master=back, text='Made by me!', bg='red', fg='black')
info.pack()
mw.mainloop()
以上是 如何将Tkinter窗口设置为恒定大小 的全部内容, 来源链接: utcz.com/qa/432459.html