gpt4 book ai didi

python - 使用按钮命令移动 tkinter 标签

转载 作者:行者123 更新时间:2023-12-01 05:43:27 25 4
gpt4 key购买 nike

我正在尝试使用 python 和 tkinter 重新创建 table 游垄断。我知道如何在 Canvas 或框架上放置标签,但是从类中的另一个函数运行此命令应该如何做?我尝试使用 Board 类中的某些函数,但随后出现错误,标签、 Canvas 等未定义,因为这种情况发生在 __init__(self,parent) 中。 。我该如何解决这些错误?或者我应该采取不同的方法来解决这个问题?希望我清楚地说明了我的问题。

import tkFileDialog
from random import randint

class Board(Frame):
def __init__(self,parent):


##create the board
frame = Frame(parent)
frame.pack()
Frame.__init__(self,parent)

frame2 = Frame(frame)
frame2.pack()

c=Canvas(frame2,width=480,height=480)
c.pack(expand=YES,fill=BOTH)
c.background=PhotoImage(file='Board.gif')
c.create_image(0,0,image=c.background,anchor='nw')

##Add player 1
player1=PhotoImage(file='plane.gif')
label_player1 = Label(c,image=player1)
label_player1.image=player1
label_player1.place(x=430,y=420)

##Add player 2
player2=PhotoImage(file='car.gif')
label_player2 = Label(c,image=player2)
label_player2.image=player2
label_player2.place(x=430,y=450)

button = Button(frame, text="Next turn", command=self.next_turn)
button.pack()

button = Button(frame, text="Roll the dice", command=self.roll)
button.pack()

def roll(self):
number=randint(2,12)
if b==0:
self.place_player_down()
return number

def place_player_down(self):

for i in range(number+1):
h=int(430-i*30)
while h>=0:
player2=PhotoImage(file='car.gif')
label_player2 = Label(c,image=player2)
label_player2.image=player2
label_player2.place(x=h,y=420)

root = Tk()
board = Board(root)
board.pack()
root.mainloop()

最佳答案

该方法是正确的(将 Tkinter 小部件包装在一个类中,并将事件处理函数作为方法),但您忘记使用对 self 的引用将小部件设置为该类的属性:

class Board(Frame):
def __init__(self,parent):
# ...
self.c = Canvas(frame2,width=480,height=480)
self.c.pack(expand=YES,fill=BOTH)
# ...

def place_player_down(self):
# Use 'self.c', not just 'c'

我认为您想对 number 值执行类似的操作,但在这种情况下,我会将其作为参数发送给 place_player_down:

def roll(self):
number=randint(2,12)
if b==0:
self.place_player_down(number)
return number # Keep in mind that this value is returned but not used anymore

def place_player_down(self, number):
# Use 'number'

关于python - 使用按钮命令移动 tkinter 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16866540/

25 4 0