[英]Organising code for Tkinter Two-Player Game
我正在嘗試制作一個兩人游戲,人們輪流采取行動。 我覺得我必須手動更改主 window 以使兩者具有相同的內容和小部件。 我如何讓自己的事情變得更簡單? 如何更輕松地在兩個 windows 之間切換?
from tkinter import *
root = Tk()
root.title('Game')
def win1():
global board
top2.withdraw()
top1.deiconify()
board=top1
def win2():
top1.withdraw()
top2.deiconify()
board=top2
top1 = Toplevel()
board = top1
top1.title('Player 1')
top1.withdraw()
buttonp1 = Button(top1, text="Switch to Player 2", command=win2)
buttonp1.grid(row=15, column=0, columnspan=10)
top2 = Toplevel()
board = top2
top2.title('Player 2')
top2.withdraw()
buttonp2 = Button(top2,text="Switch to Player 1", command=win1)
buttonp2.grid(row=15, column=0, columnspan=10)
choice = Button(text="Submit Weapons Choices", command=win1)
choice.grid()
#After this button is pressed, win1 is opened, and the switching from window to window begins.
top_array = [top1, top2]
# When generating the board, I would use "for top in top_array", then run a function which generates widgets. I want the board to start off with the exact same layout.
我遇到的問題涉及以后無法在代碼中更改文本變量,因為它是在 function 中生成的:
top_array = [top1, top2]
def init(board):
txt = StringVar(board)
txt.set("\nClick anywhere to begin\n")
label = Label(board, textvariable=txt)
label.grid(row = 11, column = 0, columnspan=10)
for top in top_array:
init(top)
我使用了 class 使兩個 windows 以相同的內容開始,但有不同的標題等和一個數組,以便我可以在兩者之間切換
class Player:
def __init__(self, board, tag, name):
self.board = board
self.tag = tag
self.name = name
p = Player(root,"","")
board1 = Toplevel()
board2 = Toplevel()
gamemode = [Player(board1, "Switch to Player 2", "Player 1"), Player(board2, "Switch to Player 1", "Player 2")]
def switch():
global pnum
pnum +=1
pnum %= 2
gamemode[pnum].board.withdraw()
gamemode[((pnum+1)%2)].board.deiconify()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.