.grid(row=1, columns=1)
我正在尝试向右侧框架添加按钮,但出于某种原因,当我运行该程序时,IDE显示它正在运行但是有
没有窗户。当我删除btn_clear_url
时,会出现窗口。
如何修复此错误,并将{{1}}按钮添加到右侧框架?
答案 0 :(得分:2)
Tk
的{{1}}(您可以看到here为什么)。 mainloop
和None
,则为grid()
- 因此,您的所有变量最终都有pack()
作为价值。您需要将小部件实例化调用和None
或grid
调用分开,并将每个调用放在自己的行上。 除此之外,您将pack
和minsize
设置为相同的大小 - 如果您真的只是想让窗口无法调整大小,请设置大小:
maxsize
...然后配置root.geometry('800x500') # for instance
属性:
resizable
root.resizable(width=False, height=False)
,因为你不知道导入的是什么名字。它可以替换您之前导入的名称,这使得很难确定程序中的名称应该来自何处。请改用from tkinter import *
。答案 1 :(得分:0)
当您在tk窗口中放置窗口小部件时,您无法在同一窗口中同时使用网格和打包,因此您应该使用pack()而不是grid()
答案 2 :(得分:0)
问题始于这行代码:
right = Frame(root, width=250, height=450, bg='blue').pack(side=RIGHT)
有了这个,right
设置为None
,因为.pack(side=RIGHT)
会返回None
。
接下来,你这样做:
btn_clear_url = Button(right, ...)).grid(row=1, columns=1)
由于right
为None
,因此与Button(root, ...)
相同。由于您已在pack
中使用root
小部件,因此您也无法使用grid
。
解决方案 - 以及最佳实践 - 将小部件创建与小部件布局分开:
top = Frame(root, width=800, height=50, bg='yellow')
bottom = Frame(root, width=800, height=50, bg='red')
left = Frame(root, width=550, height=450, bg='black')
right = Frame(root, width=250, height=450, bg='blue')
top.pack(side=TOP)
bottom.pack(side=BOTTOM)
left.pack(side=LEFT)
right.pack(side=RIGHT)
通过以上操作,right
将正确设置为框架实例,并且向right
添加窗口小部件并使用grid
将不再失败。