Аргументы входа в Tkinter: принимает 0 позиционных аргументов, но было дано 7 - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь создать программу с использованием библиотеки PuLP, которая при нажатии на кнопку решает линейную задачу и выводит значения.Вот что я получаю, когда пытаюсь оптимизировать свои входные значения:

TypeError: problem() takes 0 positional arguments but 7 were given.

На данный момент я не уверен, что понимаю, что пытается сказать мне эта ошибка TypeError.

from tkinter import*
from pulp import*

def problem():
    prob=LpProblem("problem", LpMaximize)
    x1=LpVariable("x1", lowBound=0)
    x2=LpVariable("x2", lowBound=0)
    x3=LpVariable("x3", lowBound=0)
    prob+= a*x1 +b*x2 +c*x3,
    prob+= d*x1 +e*x2 + f*x3 <= g,
    prob.solve ()
    print("status:", LpStatus[prob.status])
    for v in prob.variables():
        print (v.name, "=", v.varValue)
        print("objective=%s$" % value(prob.objective))
root =Tk()
root.title("System")
root.geometry("1300x500+0+0")
a=Entry(Top, font=("arial", 10, "bold"), bd=8)
a.grid(row=1, column=1)

b=Entry(Top,  font=("arial", 10, "bold"), bd=8)
b.grid(row=1, column=2)

c=Entry(Top,  font=("arial", 10, "bold"), bd=8)
c.grid(row=1, column=3)

d=Entry(Top,  font=("arial", 10, "bold"), bd=8)
d.grid(row=2, column=1)

e=Entry(Top,  font=("arial", 10, "bold"), bd=8)
e.grid(row=2, column=2)

f=Entry(Top,  font=("arial", 10, "bold"), bd=8)
f.grid(row=2, column=3)

g=Entry(Top, font=("arial", 10, "bold"), bd=8)
g.grid(row=3, column=1)

def inserter (value):
    w.delete("0.0", "end")
    w.insert("0.0", value)
def handler():
    try:
        g_val = float(g.get())
        a_val = float(a.get())
        b_val = float(b.get())
        c_val = float(c.get())
        d_val = float(d.get())
        e_val = float(e.get())
        f_val = float(f.get())
        inserter(problem(a_val,b_val,c_val,d_val,e_val,f_val, g_val))
    except ValueError:
            inserter("Enter more values")

w=Text(Top, font=("arial", 10, "bold"), bd=6)
w.grid(row=4, column=1)

info6=Button(Top, font=("arial", 10,"bold"), text="Optimize", bd=8,                                 command=handler)
info6.grid(row=4, column=0)

root.mainloop()

1 Ответ

0 голосов
/ 25 мая 2018

У вас есть метод problem(), который принимает 0 аргументов, но вы пытаетесь вызвать его, передавая несколько аргументов.Либо определение вашего метода должно быть изменено, чтобы принимать эти аргументы, и в этом случае кажется логичным изменить тело метода для обработки этих параметров, либо вызвать problem() без передачи параметров.

...