Python 3.x 使用方法时为什么tkinter窗口不打开;网格();?
我试图将按钮添加到正确的框架中,但由于某种原因,当我运行程序时,IDE显示它正在运行,但没有 没有窗户。当我删除Python 3.x 使用方法时为什么tkinter窗口不打开;网格();?,python-3.x,tkinter,Python 3.x,Tkinter,我试图将按钮添加到正确的框架中,但由于某种原因,当我运行程序时,IDE显示它正在运行,但没有 没有窗户。当我删除.grid(行=1,列=1)时,窗口出现。 如何修复此错误,并将btn\u clear\u url按钮添加到右侧框架?当您将小部件放置在tk窗口中时,您不能在同一窗口中同时使用grid和pack,因此您应该使用pack()而不是grid()在tk窗口中放置小部件时,您不能在同一窗口中同时使用网格和打包,因此您应该使用pack()而不是grid() 首先,您需要在代码末尾调用Tk的mai
.grid(行=1,列=1)
时,窗口出现。
如何修复此错误,并将
btn\u clear\u url
按钮添加到右侧框架?当您将小部件放置在tk窗口中时,您不能在同一窗口中同时使用grid和pack,因此您应该使用pack()而不是grid()在tk窗口中放置小部件时,您不能在同一窗口中同时使用网格和打包,因此您应该使用pack()而不是grid()- 首先,您需要在代码末尾调用
的Tk
(您可以看到原因)李>mainloop
- 另一个问题是像这样链接方法调用。实际上,您正在为变量分配最后一次调用的返回值,如果是
和grid()
,则返回值为pack()
——因此,所有变量的值都是None
。您需要将小部件实例化调用和None
或grid
调用分开,并将它们放在各自的行中李>pack
- 除此之外,您正在将
和minsize
设置为相同的大小-如果您真的只是想让窗口无法调整大小,请使用以下设置大小:maxsize
…然后配置from tkinter import * # ==================================================Settings======================================================= root = Tk() root.title("Video Youtube Downloader") # set up the title and size. root.configure(background='black') # set up background. root.minsize(800, 500) root.maxsize(800, 500) # ==================================================Frames======================================================= top = Frame(root, width=800, height=50, bg='yellow').pack(side=TOP) bottom = Frame(root, width=800, height=50, bg='red').pack(side=BOTTOM) left = Frame(root, width=550, height=450, bg='black').pack(side=LEFT) right = Frame(root, width=250, height=450, bg='blue').pack(side=RIGHT) # ==================================================Buttons======================================================= btn_clear_url = Button(right, text="Clear Url", font=('arial', 10, 'bold')).grid(row=1, columns=1)
可调整大小的属性:
root.geometry('800x500') # for instance
- 另外,我建议您从tkinter import*中去掉
,因为您不知道导入的是什么名称。它可以替换您先前导入的名称,并且很难判断程序中的名称应该来自何处。改用
导入tkinter作为tk
- 首先,您需要在代码末尾调用
的Tk
(您可以看到原因)李>mainloop
- 另一个问题是像这样链接方法调用。实际上,您正在为变量分配最后一次调用的返回值,如果是
和grid()
,则返回值为pack()
——因此,所有变量的值都是None
。您需要将小部件实例化调用和None
或grid
调用分开,并将它们放在各自的行中李>pack
- 除此之外,您正在将
和minsize
设置为相同的大小-如果您真的只是想让窗口无法调整大小,请使用以下设置大小:maxsize
…然后配置from tkinter import * # ==================================================Settings======================================================= root = Tk() root.title("Video Youtube Downloader") # set up the title and size. root.configure(background='black') # set up background. root.minsize(800, 500) root.maxsize(800, 500) # ==================================================Frames======================================================= top = Frame(root, width=800, height=50, bg='yellow').pack(side=TOP) bottom = Frame(root, width=800, height=50, bg='red').pack(side=BOTTOM) left = Frame(root, width=550, height=450, bg='black').pack(side=LEFT) right = Frame(root, width=250, height=450, bg='blue').pack(side=RIGHT) # ==================================================Buttons======================================================= btn_clear_url = Button(right, text="Clear Url", font=('arial', 10, 'bold')).grid(row=1, columns=1)
可调整大小的属性:
root.geometry('800x500') # for instance
- 另外,我建议您从tkinter import*中去掉
,因为您不知道导入的是什么名称。它可以替换您先前导入的名称,并且很难判断程序中的名称应该来自何处。改用
导入tkinter作为tk
root.resizable(width=False, height=False)
这样,right
设置为None
,因为.pack(side=right)
返回None
接下来,您将执行以下操作:
right = Frame(root, width=250, height=450, bg='blue').pack(side=RIGHT)
因为right
是None
,所以它与按钮(根,…)
相同。由于您已经在根目录下为小部件使用pack
,因此也不能使用网格
解决方案和最佳实践是将小部件创建与小部件布局分开:
btn_clear_url = Button(right, ...)).grid(row=1, columns=1)
通过上述操作,right
将正确设置为框架实例,向right
添加小部件并使用grid
将不再失败。问题从这行代码开始:
root.resizable(width=False, height=False)
这样,right
设置为None
,因为.pack(side=right)
返回None
接下来,您将执行以下操作:
right = Frame(root, width=250, height=450, bg='blue').pack(side=RIGHT)
因为right
是None
,所以它与按钮(根,…)
相同。由于您已经在根目录下为小部件使用pack
,因此也不能使用网格
解决方案和最佳实践是将小部件创建与小部件布局分开:
btn_clear_url = Button(right, ...)).grid(row=1, columns=1)
通过上述操作,right
将被正确设置为框架实例,向right
添加小部件并使用grid
将不再失败。请显示。在你发布的代码中没有任何东西会导致你描述的行为。我认为@mentalita指出的错误是我在同一行中使用了“.pack(side=TOP)”。因此,在不加载窗口的同时添加“.grid(行=1,列=1)”时,请显示。在你发布的代码中没有任何东西会导致你描述的行为。我认为@mentalita指出的错误是我在同一行中使用了“.pack(side=TOP)”。因此,在不加载窗口的同时添加“.grid(行=1,列=1)”时。