2015-09-12 37 views
0

简单的问题,我没有Python的主要经验,这只是一个挑战,以帮助我的经验。我有一个名为'分辨率'的变量,它在类内部的一个方法中。在这里,您可以看到代码:从一个类中获取一个变量到一个新的脚本python

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的脚本,我希望能够在此脚本中使用解析变量。

+0

一个实例你压痕的问题不正确。 –

回答

0

那么你运行方法run_gui()时设置了分辨率变量,所以我假设你有一个类LauncherWindow的实例,所以你可以随时保存变量作为类的成员,然后像这样访问它:

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()方法来改变它

如果你想只是把它保存为为tatic变量(不涉及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 

访问它没有必要在这里创建

+0

谢谢:)我对这个实例有了一些了解,但是我错误地访问了它! – Phelix

相关问题