我正在尝试制作游戏,当您升级游戏时,您可以解锁任务并且可以正常运行,但是我必须重新启动程序才能对其进行解锁(水平变量位于另一个文件“ save.py”中)
我已经尝试使用importlib重新启动save.py,但是那没有用,并且我试图保存级别然后重新启动save.py,但是那也不起作用。
from tkinter import messagebox
from tkinter import *
from save import *
moneyvar = IntVar()
moneyvar.set(money)
moneyvariable = str(moneyvar)
levelvar = IntVar()
levelvar.set(level)
levelvariable = str(levelvar)
money = money + 100
level = level + 1
moneyvar.set(money)
levelvar.set(level)
def missions():
missionbox = canvas.create_rectangle(0,0,700,650, fill = "#87ceeb")
missiontext = canvas.create_text(350,50,font="arial 20 bold", text="Missions")
backbtnmission = Button(text = "Back",font="arial 10 bold", bg="black", fg = "white", relief = FLAT, command = lambda: closemissions(missionbox, winm1, winm2, winb1, missiontext, winm3, winm4))
winb1 = canvas.create_window(350, 80, window = backbtnmission)
m1 = Button(text = "Tutorial",font="arial 10 bold", bg="black", fg = "white", relief = FLAT)
winm1 = canvas.create_window(350, 110, window = m1)
m2 = Button(text = "Locked",font="arial 10 bold", bg="black", fg = "white", relief = FLAT, state=DISABLED)
winm2 = canvas.create_window(350, 140, window = m2)
m3 = Button(text = "Locked",font="arial 10 bold", bg="black", fg = "white", relief = FLAT, state=DISABLED)
winm3 = canvas.create_window(350, 170, window = m3)
m4 = Button(text = "Locked",font="arial 10 bold", bg="black", fg = "white", relief = FLAT, state=DISABLED)
winm4 = canvas.create_window(350, 200, window = m4)
if level >=1:
m2.configure(state = NORMAL, text = "Insert Mission Name Here")
if level >=2:
m3.configure(state = NORMAL, text = "Insert Mission Name Here")
if level >=3:
m4.configure(state = NORMAL, text = "Insert Mission Name Here")
money = 0
level = 0
我想能够单击任务并看到下一个任务未禁用,但是我必须保存并重新启动程序,然后才不再禁用它
感谢
您可以尝试importlib.reload
。例如,
.
├── dynamic
│ ├── __init__.py
│ ├── levels.py
├── __init__.py
└── reload_vals.py
reload_vals.py
from importlib import reload
def reload_vars():
try:
from dynamic import levels
reload(levels)
print(levels.level)
except Exception as e:
print('could not load module')
print(e)
import time
if __name__ == "__main__":
while True:
time.sleep(1)
reload_vars()
levels.py
level = 102
这将每秒重新加载新的级别值(假设其他内容正在更新levels.py
。您可以设置重新加载的条件。
但是,这不是一个很好的方法。考虑使用像SQLite这样的小型数据库来存储游戏状态。