从类内部获取一个变量到一个新的python脚本中

2024-03-28 22:21:19 发布

您现在位置:Python中文网/ 问答频道 /正文

简单的问题是,我在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变量


Tags: imageselfgamemainleftselectframeside
1条回答
网友
1楼 · 发布于 2024-03-28 22:21:19

在运行run\u gui()方法时设置了resolution变量,因此我假设您有一个类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\u 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

不需要在这里创建实例

相关问题 更多 >