创建矩阵向量乘法图形用户界面

2024-09-29 22:19:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个脚本来使用Python的Tkinter来使用GUI执行矩阵向量乘法。我是新手,我正在努力学习。为此,我编写了以下代码。generate_data函数获取一个数字(例如m),并创建一个mxm矩阵。在GUI中,用户应该为matrix输入一个整数,为vector输入一个整数,然后按compute,这样matvec函数将执行计算。在

我想我还没有完全理解一些部分,但我需要一些解释在这个阶段。我的主要挑战是插入generate_data函数,以便在GUI中创建随机矩阵。在代码末尾,我复制了错误。提前谢谢。在

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()

错误:

^{pr2}$

Tags: the函数testimportdatagui矩阵generate
1条回答
网友
1楼 · 发布于 2024-09-29 22:19:39

Entry字段中得到的是字符串类型,但range采用整数类型。
因此,当您调用generate_data(matrixBox.get())时,您将向generate_data传递一个字符串。在

您可以通过调用generate_data(int(matrixBox.get()))或添加m = int(m)作为generate_data函数的第一行来解决这个问题。在

相关问题 更多 >

    热门问题