ткинтер в операциях с массивами? - PullRequest
0 голосов
/ 12 апреля 2020

Я хочу суммировать два массива с помощью tkinter, но что-то не работает с массивами.

 def ApplytoLabel():/*
        xx=size.get()
        for i in range(xx):
            element = box_list[i].get() # Get value from corresponding Entry
            ArrayLabel=Label(root,text="Array1 Element "+element)
            box_list.append(element)
            ArrayLabel.pack()

        for i in range(xx):
            element = box_list1[i].get() # Get value from corresponding Entry
            ArrayLabel=Label(root,text="Array2 Element  "+element)
            box_list1.append(element)
            ArrayLabel.pack()

        box_list = []   # Create list of Entrys
    def Boxes():
        xx=size.get()
        for i in range(0,xx):        
            box=Entry(root)
            box_list.append(box)
            box.pack()
            # Append current Entry to list
        ApplytoLabel1=Button(root,text="Submit To Array",command=ApplytoLabel)
        ApplytoLabel1.pack()
    box_list1=[]

    def Boxes1():
        xx=size.get()
        for i in range(0,xx):        
            box=Entry(root)
            box_list1.append(box)    # Append current Entry to list
            box.pack()
        ApplytoLabel1=Button(root,text="Submit To Array",command=ApplytoLabel)
        ApplytoLabel1.pack()

    tot_sum_array = []    

    def sum(box_list,box_list1,tot_sum_array):
        for j in range (xx):
            #ArrayLabel.pack()
            suma=(int(box_list[j])+int(box_list1[j]))
            tot_sum_array.append(suma)
        sum2=Label(root,text='result'%tot_sum_array).grid(row=1,column=5)

    Array = Frame(root)
    Array.pack()

    text1=Label(Array,text="Enter the Size of Array:",
                   font="Arial 10 bold",fg="blue")
    text1.grid(row=0,column=0,sticky="w")

    size=IntVar()

    ArraySize=Entry(Array,textvariable=size)
    ArraySize.grid(row=0,column=1,sticky="w")

    SizeofArray=Button(Array,text="Submit",command=Boxes)
    SizeofArray.grid(row=0,column=2,sticky="w")

    SizeofArray=Button(Array,text="Submit1",command=Boxes1)
    SizeofArray.grid(row=0,column=3,sticky="w")

    sum1=Button(Array,text='sum',command=sum)
    sum1.grid(row=0,column=4,sticky="w")

root.mainloop()/*

Ответы [ 2 ]

0 голосов
/ 15 апреля 2020
Finally, I did it. It is very basic but it took me hours...

from tkinter import*

root=Tk()
root.title("Looping of entry box")
root.geometry("1200x600")

def ApplytoLabel():
    xx=size.get()

    for i in range(xx):
        element = box_list[i].get() # Get value from corresponding Entry
        ArrayLabel=Label(root,text="Array1 Element: "+element)

        box_list.append(element)
        ArrayLabel.pack()

    for i in range(xx):
        element = box_list1[i].get() # Get value from corresponding Entry
        ArrayLabel=Label(root,text="Array2 Element: "+element)
        box_list1.append(element)
        ArrayLabel.pack()
    for i in range(xx):
        sum_ele= (int(box_list[i].get())+ int(box_list1[i].get()))
        Arraysum=Label(root,text=sum_ele)
        tot_sum_array.append(sum_ele)
        Arraysum.pack()

box_list = []   # Create list of Entrys
def Boxes():
    xx=size.get()
    for i in range(xx):        
        box=Entry(root)
        box_list.append(box)    # Append current Entry to list
        box.pack()
    ApplytoLabel1=Button(root,text="Submit To Array",command=ApplytoLabel)
    ApplytoLabel1.pack()

box_list1=[]
def Boxes1():
    xx=size.get()
    for i in range(xx):        
        box1=Entry(root)
        box_list1.append(box1)  
        box1.pack()    # Append current Entry to list
    ApplytoLabel1=Button(root,text="Submit To Array",command=ApplytoLabel)
    ApplytoLabel1.pack()

tot_sum_array=[]
def sum():
    xx=size.get()
    for i in range (xx):
        suma=Entry(root).pack()
        tot_sum_array.append(suma)
        suma.pack()

Array = Frame(root)
Array.pack()

text1=Label(Array,text="Enter the Size of Array:",
               font="Arial 10 bold",fg="blue")
text1.grid(row=0,column=0,sticky="w")

size=IntVar()
suma=IntVar()

ArraySize=Entry(Array,textvariable=size)
ArraySize.grid(row=0,column=1,sticky="w")

SizeofArray=Button(Array,text="Submit array#1",command=Boxes)
SizeofArray.grid(row=0,column=2,sticky="w")

SizeofArray=Button(Array,text="Submit array#2",command=Boxes1)
SizeofArray.grid(row=0,column=3,sticky="w")



enter code here

root .mainl oop () enter code here

0 голосов
/ 12 апреля 2020

Есть несколько вещей:

Обратите внимание на отступ кода. Этот код не работает без исправления. Мы проверяем это, вставляя его в IDLE (или другой), и запускаем его, чтобы увидеть, в чем дело.

Существует встроенная функция с именем sum. Если вы дадите это имя своей функции, вы не сможете вызвать встроенную функцию sum. Я переименовал его sum_array.

Вы определяете функцию sum_array для приема трех аргументов, но вы вызываете из Button без аргументов:

def sum(box_list,box_list1,tot_sum_array):

sum1 = Button(Array, text='sum', command=sum)

Поскольку все аргументы были в глобальном пространстве имен, я просто удалил их из функции Defenition.

Каждый раз, когда вы нажимаете на любую из кнопок «отправить», вы создаете новый массив, который добавляется к соответствующим массивам, box_list и box_list1, а также новые записи для этих элементов.

Вы пропустили использование .get() в функции sum:

suma=(int(box_list[j])+int(box_list1[j]))

должно быть:

suma = int(box_list[j].get())+int(box_list1[j].get())

Предполагается, что вы хотите, чтобы элемент за элементом перечислял сумма, я изменил функцию sum, чтобы напечатать это.

Я не совсем уверен насчет функции кнопки «Отправить в массив», поскольку программа считывает записи только при подсчете суммы.

Вы хотели бы, чтобы это работало:

from tkinter import *

root = Tk()

def ApplytoLabel():
    xx = size.get()
    for i in range(xx):
        element = box_list[i].get() # Get value from corresponding Entry
        ArrayLabel = Label(root, text="Array1 Element "+element)
        box_list.append(element)
        ArrayLabel.pack()

    for i in range(xx):
        element = box_list1[i].get() # Get value from corresponding Entry
        ArrayLabel = Label(root, text="Array2 Element  "+element)
        box_list1.append(element)
        ArrayLabel.pack()

box_list = []   # Create list of Entrys

def Boxes():
    xx = size.get()
    for i in range(xx):        
        box = Entry(root)
        box_list.append(box)
        box.pack()
        # Append current Entry to list
    ApplytoLabel1 = Button(root, text="Submit To Array", command=ApplytoLabel)
    ApplytoLabel1.pack()

box_list1 = []

def Boxes1():
    xx = size.get()
    for i in range(xx):        
        box = Entry(root)
        box_list1.append(box)    # Append current Entry to list
        box.pack()
    ApplytoLabel1 = Button(root, text="Submit To Array", command=ApplytoLabel)
    ApplytoLabel1.pack()

tot_sum_array = []    

def sum_array():    # Changed name from "sum", removed argument list
    xx = size.get()
    sum2 = Label(root, text='result'%tot_sum_array).pack()
    for j in range(xx):
        # Added ".get()" to the calculation
        suma = int(box_list[j].get())+int(box_list1[j].get())
        tot_sum_array.append(suma)
        Label(root, text=str(suma)).pack()

Array = Frame(root, bg='thistle')
Array.pack(padx=10, pady=10)

text1 = Label(Array, text="Enter the Size of Array:", font="Arial 10 bold", fg="blue")
text1.grid(row=0, column=0, sticky="w")

size = IntVar()
ArraySize = Entry(Array, textvariable=size)
ArraySize.grid(row=0, column=1, sticky="w")

SizeofArray = Button(Array, text="Submit", command=Boxes)
SizeofArray.grid(row=0, column=2, sticky="w")

SizeofArray = Button(Array, text="Submit1", command=Boxes1)
SizeofArray.grid(row=0, column=3, sticky="w")

sum1 = Button(Array, text='sum', command=sum_array)
sum1.grid(row=0, column=4, sticky="w")

root.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...