在 Python 中从 tkentry 调用动态文本变量组

问题描述

对不起,我不是很擅长编程和编码结构。我尝试在网上查找代码示例代码,但没有得到我想要的。我开发了一个程序,供用户在 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 (将#修改为@)