我并排创建了两个文本框小部件 . 左侧的文本框包含100行Checkbutton框 . 右侧文本框包含100行文本 . 我已将两个文本框配置为具有相同的高度30和宽度10 .
当我运行程序时,左侧文本框垂直增长超出我的可视屏幕区域的大小 . 结果,右侧文本框被推到框架下方,我无法再看到它 . 我知道它就在那里,因为当我将行数(对于两个盒子)减少到50(而不是100)时,我可以看到正确的文本框 .
另外,我注意到左侧滚动条未连接到左侧文本框 . 但是,右侧滚动条正确连接到右侧文本框 .
你能帮我理解一下:
1)为什么左侧文本框垂直增长(在定义的文本小部件大小之外)并且与右侧文本框大小和位置不同步?
2)为什么左侧滚动条不会附加到左侧文本小部件(如右侧文本框)?
到目前为止,这是我的代码:
#!/usr/bin/python
from Tkinter import *
class MyApp:
def __init__(self, parent):
self.myParent = parent
self.main_container = Frame(self.myParent)
self.main_container.grid(row=0, column=0, columnspan=4)
self.left_frame = Frame(self.main_container)
self.left_frame.grid(row=0, column=0, columnspan=2)
self.right_frame = Frame(self.main_container)
self.right_frame.grid(row=0, column=2, columnspan=2)
self.checkbox_scrollbar = Scrollbar(self.left_frame)
self.checkbox_scrollbar.grid(row=0, column=1, sticky='NS')
self.checkbox_text = Text(self.left_frame, height=30, width=10, yscrollcommand=self.checkbox_scrollbar.set)
self.checkbox_text.grid(row=0, column=0)
self.checkbox_scrollbar.config(command=self.checkbox_text.yview)
self.databox_scrollbar = Scrollbar(self.right_frame)
self.databox_scrollbar.grid(row=0, column=1, sticky='NS')
self.databox_text = Text(self.right_frame, height=30, width=10, yscrollcommand=self.databox_scrollbar.set)
self.databox_text.grid(row=0, column=0)
self.databox_scrollbar.config(command=self.databox_text.yview)
my_dict = {}
for each_num in range(100):
my_line = "Line number: " + str(each_num)
my_dict[my_line] = 0
for my_key in my_dict:
my_dict[my_key] = IntVar()
cb = Checkbutton(self.checkbox_text, text=my_key, variable=my_dict[my_key])
cb.grid(sticky='W')
for each_entry in range(100):
entry_line = "This is entry number: " + str(each_entry) + "\n"
self.databox_text.insert(END, entry_line)
root = Tk()
root.title("Checkbox UI Test")
myapp = MyApp(root)
root.mainloop()
2 回答
我已经在这一个小时了,但我的Tkinter知识并不像我想的那样完整,所以我相信其他人会得到另一个答案但是:
Text
框未被CheckBox
隐藏 . 尝试checkbox_text.insert(END, "some text")
并将背景更改为"red"
并且您在屏幕上看不到'll see that it',即使您将100个复选框更改为仅绘制2.我不确定为什么Text
的高度限制未得到遵守,但是grid
CheckBox
必须与它有关 .同样的问题正在影响
ScrollBar
,它附在左边Frame
,而不是Text
;我没有尝试过,但是在创建Text
之后创建它可能会有所帮助 .你关于它不同步的另一个问题可能是设置
weight
,就像this一样,但它并不是同一个网格的一部分,因为它们无法相互传达它们的大小 . 我认为两个_2530628都是相同的尺寸,这是它能做的最好的 .现在已经很晚了,我对这里的东西可能不对,所以请大家带上一粒盐 .
如果
.config(bg="RED")
在小部件上与我的问题相关并且有时候_2530630正在进行,我喜欢做一些调试 .我需要使用名为window_create的Text小部件方法来插入我的嵌入式对象(我的checkbutton小部件) . 以下是如何实现它 . 希望这有助于其他人: