如何将Tkinter窗口设置为恒定大小

我正在用tkinter编写一个小游戏,简而言之,我陷入了困境。

我有一种启动菜单,其中有两个按钮和一个标签。

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

我希望创建按钮和标签时​​背景不会改变,但是无论我做什么,它都会适应大小。这是我的代码:

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(宽度= False,高度= False)

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

回答:

您可以pack_propagate通过设置关闭pack_propagate(0)

pack_propagate基本上,关闭此处表示不要让框架内的小部件控制其大小。因此,您已将其宽度和高度设置为500。关闭传播静止图像时,可以将其设置为该大小,而无需小部件更改帧的大小以填充其各自的宽度/高度,这通常会发生这种情况。

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

如另一个答案中所述,要将窗口的最大尺寸设置为窗口,可以设置maxsize属性,或者minsize可以设置根窗口的几何形状,然后关闭调整大小。imo更加灵活。

无论何时设置gridpack在小部件上,它都会返回None。因此,如果您希望能够保留对窗口小部件对象的引用,则不应在正在调用gridpack在其上的窗口小部件上设置变量。您应该将变量设置为小部件Widget(master,

....),然后调用packgrid在小部件上。

import tkinter as tk

def 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

回到顶部