微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决在 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 举报,一经查实,本站将立刻删除。