首先为代码的长度道歉,但我想展示这一切。
我有一个看起来像这样的界面:
当我将第三个选项菜单更改为“列表”时,我将添加具有“n”值的选项(未显示)。然后我需要'n'列,用户可以在其中输入他们的值。
我还有一个问题,根据界面打开的文本文件,可能有“n”行。
因此,我想知道是否有可能(因为我很难在框中不重复相同的值,现在我需要“n”列)添加“n”个行和列,因为我的代码显示只添加 4 列。我可以读取行数,但无法返回所有这些值,具体取决于有多少行。到目前为止我可以做一排..
谢谢!
def numberwritten(number):
fg = number.get()
print fg
numbers = [StringVar() for i in xrange(4) ] #Name available in global scope. Need to add other rows?
for i in numbers:
i.trace('w',lambda a,b,c,n=i: numberwritten(n) )
def ChoiceBox(choice):
co_ord = str(frame_table.grid_size())
col, rows = map(float, co_ord.strip('()').split(','))
rows = int(rows)
if choice == "Fixed":
empty1.destroy()
#choice_frame.grid_forget()
tkMessageBox.showinfo("Message", "No optimisation, value fixed.")
elif choice == "List":
column = 7
for i in xrange(4):
choice_title = Label(frame_table, text='Value %g'% float(i+1), bg='white', borderwidth=0, width=10)
choice_title.grid(row=1, column=column+i, sticky="nsew", padx=1, pady=1)
boxes=[]
for i in xrange(4):
for j in range(2, rows):
box=Entry(frame_table,bg='white',borderwidth=0,textvariable=numbers[i], width=10, justify="center") # Here I'm having problems with rows
box.grid(row=j,column=column+i, sticky='nsew', padx=1, pady=1)
boxes.append(box)
box1,box2,box3,box4=boxes
elif choice == "Interval" or "Optimisation":
for i in xrange(2):
choice_title1 = Label(frame_table, text='Min Value', bg='white', borderwidth=0)
choice_title1.grid(row=0, column=column, sticky="nsew", padx=1, pady=1)
choice_title2 = Label(frame_table, text='Max Value', bg='white', borderwidth=0)
choice_title2.grid(row=0, column=column+1, sticky="nsew", padx=1, pady=1)
boxes=[]
for i in xrange(2):
box=Entry(frame_table,bg='white',borderwidth=0,textvariable=numbers[i])
box.grid(row=rows+1,column=i, sticky='ew', padx=1, pady=1)
boxes.append(box)
box1,box2,box3,box4=boxes
更新:我稍微进步了,现在在类 Window 下的 ChoiceBox 部分是 ChoiceBox(self,choice),我有以下部分,我需要更改注释行以接受“n”个框。
column = 7
for i in xrange(self.number_boxes):
choice_title = Label(self.frame_table, text='Value %g'% float(i+1), bg='white', borderwidth=0, width=10)
choice_title.grid(row=1, column=column+i, sticky="nsew", padx=1, pady=1)
boxes=[]
for i in xrange(self.number_boxes):
for j in range(2, rows):
box=Entry(self.frame_table,bg='white',borderwidth=0,textvariable=numbers[i], width=10, justify="center")
box.grid(row=j,column=column+i, sticky='nsew', padx=1, pady=1)
boxes.append(box)
#box1,box2,box3,box4=boxes
然而,我仍然遇到使用 numberwritten 的问题,包括原始示例中的前几行代码来完全提取值列表,最好是针对每一行。