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