我正在尝试创建一个用于对问卷进行评分的应用。为了避免循环引用,我有3个(确实是4个,但MWE的一部分不需要一个)文件或模块(如果我没错的话)。
1)Main.py
; 2)scoring.py
; 3)variables.py
(避免循环引用)。我需要做的就是使用main.py
中的按钮打印变量dvQ1,所以也许这段代码太复杂了。
基本上,我只想对条目进行打分并打印出来(问题列表(Q1list
在另一个文件中,我认为MWE不需要) 。我会尽力使用不同的文件来组织代码,因为这样会有20-32个问题。
main.py
from tkinter import *
import variables as var
Label(win, text="X, Y, Z text", justify = LEFT, wraplength=500 ).grid(row=3, columnspan=2)
q1 = IntVar()
for text, value in Q1list:
b = Radiobutton(win, text=text, variable=q1, value=value)
b.grid(sticky='W', rowspan=5, columnspan=2)
def print_button():
sc = var.Score()
print(sc.Q1score)
scoring.py文件只是创建dvQ1
变量,该变量将传递给variables.py
文件。当我从q1
scoring.py`中将变量main.py' and then imported the final variable dvQ1 or Q1score from
导入main然后进行打印时,就会发生循环关系。这就是为什么我添加了“ variables.py”文件。
scoring.py
from main import *
Q1 = q1.get()
if Q1 == 1:
dvQ1 = 0
elif Q1 == 2:
dvQ1 = 0.873
elif Q1 == 3:
dvQ1 = 0.237
elif Q1 == 4:
dvQ1 = 0.86
elif Q1 == 5:
dvQ1 = 1
else:
dvQ1 = np.NaN
我正在尝试构建该类的最后一个文件,以允许在main.py的主窗口内“看到”变量。我真的只想设置一个变量(Q1score或dvQ1)以发送到“ main.py”。
variables.py
from tkinter import *
import numpy as np
import scoring
class Score:
def __init__(self):
self.Q1score = IntVar()
self.Q1score.set(scoring.dvQ1)
return(Q1score)
我不断收到错误消息:
Traceback (most recent call last):
File "/usr/lib/python3.6/tkinter/__init__.py", line 1702, in __call__
return self.func(*args)
File "/home/nrsmoll/PycharmProjects/SeaOfScores/main.py", line 61, in print_button
sc = var.Score()
AttributeError: module 'variables' has no attribute 'Score'