问题描述
对不起,我不是很擅长编程和编码结构。我尝试在网上查找代码示例代码,但没有得到我想要的。我开发了一个程序,供用户在 1 行中输入项目、价格、单位和总数。它是一个动态行,因此用户可以插入无限数量的行。我的代码在下面,抱歉,如果代码很乱。我设法从网上找到了 OnChange 方法,但在添加行时,OnChange 无法在前一行上工作以设置 Total 值。我被卡住了,如果有人可以帮助我,非常感谢..非常感谢您的时间
newwin=Tk()
newwin.title ("")
newwin.geometry("1200x550")
y1=0
entry_ITEM_variable = []
scrolledtext_ITEM = []
def OnChange (a,b,c,s_var):
list_s_vars = s_var.get()
print (a)
value_QUANTITY = entry_ITEM_variable[x-3].get() ##getting the value of quantity after cursor crossover from entry Box
value_PRICE = entry_ITEM_variable[x-1].get() ##getting the value of price/unit after cursor crossover from entry Box
value_GRAND_TOTAL = int(value_QUANTITY) * int(value_PRICE) ## multiply to get the total
entry_ITEM_variable[x].set(value_GRAND_TOTAL) ## display or set the entry Box of TOTAL to the value of multiplication
def ADD_COLUMN(): #add column for addititional entry
global y1 ## row number indexing
global x ## x is the running index number for textvariable name entry_ITEM_variable[x]
for i in range (5):
column_position_list = ["0","2","3","4","5"]
ENTRY_width = ["4","15","10","15"]
x=(y1*5)+i ## x is the running index number for textvariable name entry_ITEM_variable[x]
entry_ITEM_variable.append(StringVar()) ##Append must be inside the for loop and outside if statement to prevent list index out of range
entry_ITEM_variable[x].trace("w",lambda a,z=x: OnChange (a,entry_ITEM_variable[z]))
ITEM_entry = ttk.Entry(newwin,textvariable=entry_ITEM_variable[x],width=ENTRY_width[i])
ITEM_entry.grid(row=y1+1,column=column_position_list[i],padx=3)## uses grid to place according to row and column and padx/pady to set distance from widget to widget
scrolledtext_ITEM.append(Intvar()) ##Append scrolledtext to scrolledtect_value[y1] so can be called anytime by using scrolledtext_value.get()
entry_ITEM_variable[x-4].set(int(y1+1))
scrolledtext_ITEM[y1] = scrolledtext.ScrolledText(newwin,width=82,height=6)
scrolledtext_ITEM[y1].grid(row=y1+1,column=1,padx=3,pady=3) ## place widget on a window
setup above and uses grid to place according to row and column and padx/pady to set distance
from widget to widget
y1=y1+1 ##y1 is the integer for start row no(ITEM numbering) and scrolledtext widget numbering
ADD_button=Button(newwin,text="ADD COLUMN",relief="groove",command=lambda:ADD_COLUMN()) ##
Button for additional entry
ADD_button.grid(row=0,column=0)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)