为我的Python程序创建GUI时遇到了一些问题。
在代码中,我实现了此功能:
def simula_partita(modello, squadraCasa, squadraOspite, max_gol=10):
media_gol_casa = modello.predict(pd.DataFrame(data={'Squadra': squadraCasa,
'Avversaria': squadraOspite, 'Casa':1},
index=[1])).values[0]
media_gol_ospiti = modello.predict(pd.DataFrame(data={'Squadra': squadraOspite,
'Avversaria': squadraCasa, 'Casa':0},
index=[1])).values[0]
previsione_squadra = [[poisson.pmf(i, media_squadra) for i in range(0, max_gol+1)]
for media_squadra in [media_gol_casa, media_gol_ospiti]]
ris = np.outer(np.array(previsione_squadra[0]), np.array(previsione_squadra[1]))
print(ris)
return(ris)
它需要四个参数(modello,squadraCasa,squadraOspite,max_gol)。
如果我在代码中调用它,就像这样:
simula_partita(modello_poisson, 'Juventus', 'Liverpool', max_gol=4)
运行顺利,并给了我令人讨厌的输出。
现在,在代码末尾,我尝试使用此代码制作GUI:
root = Tk()
m = StringVar()
c = StringVar()
o = StringVar()
g = StringVar()
sceltaModello = Entry(root, textvariable = m)
sceltaCasa = Entry(root, textvariable = c)
sceltaOspite = Entry(root, textvariable = o)
sceltaGol = Entry(root, textvariable = g)
sceltaModello.pack()
sceltaCasa.pack()
sceltaOspite.pack()
sceltaGol.pack()
m.set('modello_poisson')
c.set('Squadra di Casa')
o.set('Squadra Ospite')
g.set('Max Gol')
modello = m.get()
squadraCasa = c.get()
squadraOspite = o.get()
max_gol = g.get()
avvia = Button(root, text = "Avvia Simulazione", command = simula_partita)
avvia.pack()
root.mainloop()
我的愿望是将“ modello”,“ squadraCasa”,“ squadraOspite”和“ max_gol”作为Entry()输入,但是它似乎不起作用,并且给了我函数“ simula_partita”错误需要这些参数。
您能帮我解决这个问题吗? 提前非常感谢!
答案 0 :(得分:0)
您的功能由4个参数定义。通过Button中的命令选项调用函数时,必须传递这些参数。我不完全知道您的功能是什么,因此,我现在将其替换以打印4个参数。
from tkinter import *
import sqlite3
root = Tk()
def simula_partita(modello, squadraCasa, squadraOspite, max_gol=10):
print(modello, squadraCasa, squadraOspite, max_gol)
m = StringVar()
c = StringVar()
o = StringVar()
g = StringVar()
sceltaModello = Entry(root, textvariable = m)
sceltaCasa = Entry(root, textvariable = c)
sceltaOspite = Entry(root, textvariable = o)
sceltaGol = Entry(root, textvariable = g)
sceltaModello.pack()
sceltaCasa.pack()
sceltaOspite.pack()
sceltaGol.pack()
m.set('modello_poisson')
c.set('Squadra di Casa')
o.set('Squadra Ospite')
g.set('Max Gol')
avvia = Button(root, text = "Avvia Simulazione", command = lambda: simula_partita(m.get(), c.get(), o.get(), g.get()))
avvia.pack()
root.mainloop()
编辑:回答OP的特定问题
输入字段必须设置为字符串。我了解您正在尝试将变量作为参数传递。但是输入字段的输出将是一个字符串。
您可以做的是创建一个字典,将字符串作为键,并将变量作为值(即下面的代码中的“数据”),然后发送变量,如data[m.get()]
。如果您可以提供更多的变量,则可以将其添加为该字典中的另一个键值对。
第4个参数也是一个int,因此在使用int()传递之前,我已经将它设为一个int。
尝试在完整代码中更改为这些行。
m.set('modello_poisson')
c.set('Squadra di Casa')
o.set('Squadra Ospite')
g.set('Max Gol')
data={'modello_poisson':modello_poisson}
avvia = Button(root, text = "Avvia Simulazione", command = lambda: simula_partita(data[m.get()], c.get(), o.get(), int(g.get())))
我在4个输入字段中输入了以下内容
modello_poisson
Juventus
Atalanta
4
并获得输出
[[0.03608837 0.03099437 0.0133097 0.00381033 0.00081812]
[0.08888343 0.07633721 0.03278097 0.00938461 0.00201498]
[0.1094572 0.09400692 0.04036875 0.01155685 0.00248139]
[0.0898621 0.07717774 0.03314191 0.00948794 0.00203717]
[0.0553312 0.047521 0.02040662 0.00584205 0.00125436]]
打印到我的控制台上。
答案 1 :(得分:-1)
完整代码:
for question in a_dict:
answer = input(question.question)
if answer == question.answer:
points += 10