从类中获取变量到新的脚本python中

时间:2015-09-12 14:12:51

标签: python tkinter

简单的问题,我没有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变量。

1 个答案:

答案 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

无需在此处创建实例