简单的问题,我没有Python的主要经验,这对帮助我的经验来说只是一个挑战。我有一个名为' resolution'这是在类中的方法内部。在这里你可以看到代码:
class LauncherWindow(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.master.title('RPG-game')
self.pack(fill=BOTH, expand=1)
self.run_gui()
def run_gui(self):
resolutions = ('1920 x 1080',
'1920 x 1080',
'1600 x 900',
'1280 x 720',
'640 x 800')
resolution = StringVar()
resolution.set(resolutions[0])
auto_image = Image.open('resources/launcher/launcher.png')
render_image = ImageTk.PhotoImage(auto_image)
image_print = Label(self, image=render_image)
image_print.image = render_image
image_print.pack()
play_button = ttk.Button(self, text='Play!', command=lambda: start_game())
play_button.pack(side=BOTTOM, pady=10)
main_frame = Frame(self, bg='#D6D7D7')
select_resolution = ttk.Label(main_frame, text='Select resolution:', background='#D6D7D7')
select_resolution.pack(side=LEFT)
select_resolution_entry = ttk.OptionMenu(main_frame, resolution, *resolutions)
select_resolution_entry.pack(side=LEFT, padx=10)
windowed_mode = ttk.Label(main_frame, text='Windowed:', background='#D6D7D7')
windowed_mode.pack(side=LEFT)
windowed_checkbutton = Checkbutton(main_frame, background='#D6D7D7')
windowed_checkbutton.pack(side=LEFT, padx=2)
main_frame.pack(fill=BOTH, padx=50, side=BOTTOM, pady=20)
def start_game():
print('starting game')
for i in resolutions:
if resolution.get() == i:
print(resolution.get())
我的假设是我需要创建一个可以导入到新脚本的全局变量,我可以对此事项有任何指导吗?
如果我确实需要在类之外创建一个变量,我如何在类中的方法中访问该变量?
示例:我有一个名为MainGame.py的脚本,我希望能够在此脚本中使用resolution变量。
答案 0 :(得分:0)
你在运行方法run_gui()时设置了分辨率变量,所以我假设你有一个LauncherWindow类的实例,所以你总是可以将变量保存为类的成员,然后像这样访问它: / p>
class LauncherWindow(Frame):
def __init__(self, master=None):
Frame.__init__(self, master)
self.master.title('RPG-game')
self.pack(fill=BOTH, expand=1)
self.resolution = "1920 x 1080"
self.run_gui()
和MainGame.py
x = LauncherWindow()
print x.resolution
这样你就可以在run_gui()
等方法中改变它如果您只想将其保存为静态变量(与LauncherWindow类的实例无关),可以将其保存为
class LauncherWindow(Frame):
RESOLUTION = "1920 x 1080"
def __init__(self, master=None):
Frame.__init__(self, master)
self.master.title('RPG-game')
self.pack(fill=BOTH, expand=1)
self.run_gui()
通过这种方式,你将只有一个"分辨率"它将保持静态,如果有人更改它,它将针对LauncherWindow的所有实例进行更改
这次你可以像
那样访问它print LauncherWindow.RESOLUTION
无需在此处创建实例