我的python程序中有cloumn和row的以下代码
def __init__(self):
Frame.__init__(self)
self.function = {0:self.bubble, 1:self.insertion, 2:self.selelction}
self.master.title("Sorting")
self.master.rowconfigure(5, weight=1)
self.master.columnconfigure(5, weight=1)
self.grid(sticky=W+E+N+S )
对于存储随机数的文本框,我使用此代码,例如每个数字都有不同的文本框。
def gen(self):
self.nums = [random.randint(0, 100) for x in range(10)]
for num in self.nums:
i=iter(self.nums)
item1=i.next()
item2=i.next()
item3=i.next()
item4=i.next()
item5=i.next()
item6=i.next()
item7=i.next()
item8=i.next()
item9=i.next()
item10=i.next()
#num = ''.join('%4i' % num for num in self.nums)
self.text1 = Text(self,width=2, height=1)
self.text1.grid(row =3,column=0,sticky = W+E+N+S)
self.text1.insert(END,item1)
self.text2 = Text(self,width=2, height=1)
self.text2.grid(row =3,column=1,sticky = W+E+N+S)
self.text2.insert(END,item2)
self.text3 = Text(self,width=2, height=1)
self.text3.grid(row =3,column=2,sticky = W+E+N+S)
self.text3.insert(END,item3)
self.text4 = Text(self,width=2, height=1)
self.text4.grid(row =3,column=3,sticky = W+E+N+S)
self.text4.insert(END,item4)
self.text5 = Text(self,width=2, height=1)
self.text5.grid(row =3,column=4,sticky = W+E+N+S)
self.text5.insert(END,item5)
self.text6 = Text(self,width=2, height=1)
self.text6.grid(row =3,column=5,sticky = W+E+N+S)
self.text6.insert(END,item6)
self.text7 = Text(self,width=2, height=1)
self.text7.grid(row =3,column=6,sticky = W+E+N+S)
self.text7.insert(END,item7)
self.text8 = Text(self,width=2, height=1)
self.text8.grid(row =3,column=7,sticky = W+E+N+S)
self.text8.insert(END,item8)
self.text9 = Text(self,width=2, height=1)
self.text9.grid(row =3,column=8,sticky = W+E+N+S)
self.text9.insert(END,item9)
self.text10 = Text(self,width=2, height=1)
self.text10.grid(row =3,column=9,sticky = W+E+N+S)
self.text10.insert(END,item10)
但它的输出如下所示。我怎么能纠正这个。
答案 0 :(得分:0)
根据我对评论的回复,您希望小部件能够平等扩展。要在使用网格时执行此操作,请确保每列具有相同的权重。
这是一个例子,它还展示了如何在循环中创建所有这些小部件以减少代码行数:
def gen(self):
self.nums = [random.randint(0, 100) for x in range(10)]
self.items = []
self.text = []
for column, num in enumerate(self.nums):
text = Entry(self, width=2)
text.insert(0, num)
text.grid(row=3, column=column, sticky="nsew")
self.items.append(num)
self.text.append(text)
self.grid_columnconfigure(column, weight=1)
请注意此示例如何使用Entry
小部件而不是Text
小部件。由于您只需要这一行高,Entry
小部件是更好的选择,因为它始终只允许一行文本。
答案 1 :(得分:0)
如果您查看其中包含12的文本框,您可以看到它的大小与整个列和行相关(其上方和下方的单元格大小相同),因此文本框 - 以及您的其他“行为不端”会扩展以匹配其列的格式。我强烈建议在这种情况下使用pack()函数而不是grid()进行定位,因为它允许您格式化每个单独的元素,而不会影响其他元素。你可以使用常量变量来表示文本框的宽度/高度,然后设置它们的每个属性(width = WIDTHCONSTANT,height = HEIGHTCONSTANT)等。祝你好运!