python中scope函数_Python函数/按钮引用/Scope E

我正在尝试创建一个简单的纸牌游戏。它有4个按钮和2个主菜单图像。那个4个按钮是war,garbage,instruct,和{}。当单击war按钮时,它应该是command=self.game_war,垃圾也是如此。instruct应该演示如何播放,quit_exe应该简单地退出应用程序。让我们用war来解决这个问题。在

目标

我需要在单击时,war在单击时执行def game_war(self)函数。当这个被点击时,它应该grid_forget()所有的小部件,这样它就可以为war游戏生成小部件。当一个名为return的按钮被点击时,它会清除小部件,然后重新生成主菜单。在

要求

它需要能够启动基于点击按钮的游戏,游戏功能应该能够使用已经引用到的变量使用、覆盖和保存这些变量,这样它就可以忘记小部件并放置新部件。当游戏结束时,它应该忘记当前的小部件,使用预先引用的变量,然后重新生成主菜单。在

问题

在赋值错误之前,我得到了一个局部变量。我试过使用nonlocal和global,但似乎不起作用。我需要这个,因为这是一个要求。在

摘要

我需要能够执行一个可以抓取和使用变量的函数。在本例中,我需要war调用game_war,它可以访问war、instruct、quit_exe、garbage、usrCrd和{}变量来清除它们,然后为游戏生成新的变量,然后在游戏结束时,重新生成主菜单小部件。在import tkinter

import winsound

from tkinter import *

from PIL import Image, ImageTk

from random import randint, randrange

class CardGame(tkinter.Frame):

def __init__(self, root):

tkinter.Frame.__init__(self, root)

#define variables for cards

crdImg = []

usrStk = None

cpuStk = None

#define card images

i = 1

while i < 57:

i = i + 1

crdImg.append('img/cards/%s.png' % (i - 1))

usrStk = crdImg[54]

cpuStk = crdImg[55]

#define card stacks

usrCrdImg = Image.open(usrStk)

usrCrdBg = ImageTk.PhotoImage(usrCrdImg)

usrCrd = tkinter.Label(root, image=usrCrdBg)

usrCrd.image = usrCrdBg

cpuCrdImg = Image.open(cpuStk)

cpuCrdBg = ImageTk.PhotoImage(cpuCrdImg)

cpuCrd = tkinter.Label(root, image=cpuCrdBg)

cpuCrd.image = cpuCrdBg

#define empty cell generation

def empCell(px, py, r, c):

grid(padx=px, pady=py, row=r, column=c)

#define buttons

war = tkinter.Button(self, text="Play War!", command=self.game_war)

garbage = tkinter.Button(self, text="Play Caravan!", command=self.game_garbage)

instruct = tkinter.Button(self, text="How to Play", command=self.instruct)

quit_exe = tkinter.Button(self, text="Quit", command=quit)

#define layout

usrCrd.grid(row=1, column=1)

cpuCrd.grid(row=1, column=4)

war.grid(row=2, column=2)

garbage.grid(row=3, column=2)

instruct.grid(row=4, column=2)

quit_exe.grid(row=5, column=2)

#define game functions

def game_war(self):

war.grid_forget()

garbage.grid_forget()

instruct.grid_forget()

quit_exe.grid_forget()

usrCrd.grid_forget()

cpuCrd.grid_forget()

print("Debug")

def game_garbage(self):

print("Debug")

def instruct(self):

print("Debug")

if __name__=='__main__':

root = Tk()

root.columnconfigure(1, weight=1)

root.rowconfigure(1, weight=1)

CardGame(root).grid(row=5, column=3)

root.wm_title('Card Game')

root.mainloop()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值