Я пишу скрипт для выполнения умножения матричного вектора с помощью GUI с использованием Tkinter of Python. Я новичок в TKinter
, и я стараюсь учиться. Для этого я написал для этого следующий код. Функция generate_data
получает число (например, m
) и создает матрицу mxm
. В графическом интерфейсе пользователь должен ввести целое число для матрицы и целое число для вектора и вычислить результат, поэтому функция matvec
выполняет вычисление.Создание графического интерфейса для умножения матричного вектора
Я думаю, что я не понял должным образом некоторые части, но на данном этапе мне понадобятся некоторые объяснения. Моя главная задача - вставить функцию generate_data
таким образом, который можно использовать в графическом интерфейсе для создания случайной матрицы. В конце кода я скопировал ошибку. Заранее спасибо.
import sys
from Tkinter import *
import dotprod
base = Tk()
resultStr = StringVar()
resultStr.set("Enter Matrix1 and Matrix2")
matrixLabel = Label(text = "Enter the size of the matrix:")
matrixLabel.pack()
matrixBox = Entry()
matrixBox.pack()
vectorLabel = Label(text = "Enter the size of the vector:")
vectorLabel.pack()
vectorBox = Entry()
vectorBox.pack()
def generate_data(m):
test_data = []
for i in range(m):
test_data.append([])
for j in range(m):
test_data[i].append(random())
return test_data
def matvec():
m = int(generate_data((matrixBox.get())))
v = [2] * len_m
vec = [0] * len(m)
for i in range(len(m)):
vec[i] = dotprod.dotprod(m[i], v)
resultStr.set("Matrix vector product is " + str(vec))
return vec
Computebutton = Button(text = "Compute", command = matvec)
Computebutton.pack()
base.mainloop()
Ошибка:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 1413, in __call__
return self.func(*args)
File "<stdin>", line 2, in matvec
File "<stdin>", line 3, in generate_data
TypeError: range() integer end argument expected, got str.
Сообщение об ошибке довольно ясно - 'range (m)' in 'generate_data' ожидает' m' как 'int', но' matrixBox.get() 'предоставил' str'. – jonrsharpe