Tkinter的嵌套的框架与网格管理问题(Tkinter Nested Frames with Gr

2019-09-20 02:17发布

我使用的Python 2.6和随带的标准Tkinter的重新设计布局的接口。 麻烦的是,我注意到一些奇怪的行为,我是新来的Tkinter所以这可能只是简单的东西我可以俯瞰由于缺乏经验。

这里是我如何才能获得所需的布局筑巢主框架内的帧的一些示例代码:

import Tkinter as tk

root = tk.Tk()

master = tk.Frame(root)

frame = tk.Frame(master).grid(sticky = tk.W)

item1 = "Label One"
L1 = tk.Label(frame, text = item1).grid(sticky = tk.W)

b1 = tk.Button(frame, text = "Button 1").grid(sticky = tk.W)

find = tk.Label(frame, text = "Find").grid(sticky = tk.W)

item = tk.Entry(frame, width = 50).grid(sticky = tk.W)
##item.insert(0,"Enter Item to Search For")

L2 = tk.Label(frame, text = "Label Two").grid(sticky = tk.W)

search = tk.Button(frame, text = "Search").grid(row = 3, column = 0)

frame2 = tk.Frame(master).grid(sticky = tk.W)

list1 = tk.Listbox(frame2, width = 100).grid(sticky = tk.W)

##yscroll = tk.Scrollbar(frame2,orient = tk.VERTICAL,command = list1.yview).grid(row = 5, column = 1, sticky = tk.N + tk.S + tk.W)
yscroll = tk.Scrollbar(frame2, orient = tk.VERTICAL).grid(row = 5, column = 1, sticky = tk.N + tk.S + tk.W)
##list1.configure(yscrollcommand = yscroll.set)

##xscroll = tk.Scrollbar(frame2, orient = tk.HORIZONTAL, command = list1.xview).grid(sticky = tk.W + tk.E)
xscroll = tk.Scrollbar(frame2, orient = tk.HORIZONTAL).grid(sticky = tk.W + tk.E)
##list1.configure(xscrollcommand = xscroll.set)

root.mainloop()

当我尝试插入在录入组件的默认值,以及它的工作之前,我开始嵌套帧,就会出现此以下错误:

Traceback (most recent call last):
   File "H:\Tkinter\Grid.py", line 17, in <module>
    item.insert(0,"Enter Item to Search For")
AttributeError: 'NoneType' object has no attribute 'insert'

上例code.These全部注释掉线发生Similiar错误是我需要会借此,因为当前的滚动条行不通的,因为我不能告诉他们滚动时更改列表的操作。

1.当你窝帧这样做我访问以不同的方式在小部件的变量?

2.当我使用嵌套的框架和两个孩子和家长使用的是网格,为什么我的小部件放置对应于刚大师的行和列数? 如果你看一下Y轴滚动条线路我不得不这样做行= 5,主的山坳= 1。 我认为它应该是排0,帧2的第1栏,这是因为小部件都有家长设置为帧2,我想帧2使用网格为好,但它似乎使用主框架网格。

3.Is能够显示在不同帧中的网格线?

Answer 1:

当使用Tkinter ,你不应该创建一个对象,并grid ,同时它。

bad = tk.Button(frame).grid()  #"bad" is None since .grid returns None

good = tk.Button(frame)
good.grid()

而得到的信息(例如电池)为特定的网格控件,你可能想使用grid_info方法。



文章来源: Tkinter Nested Frames with Grid Manager Issues