#!/usr/bin/env python3 from tkinter import * class Game(Frame): def __init__(self, master=None): # TK stuff Frame.__init__(self, master) self.master = master # Function where we can setup buttons self.initialize_window() # Setup some game stuff self.current_player = "X" def initialize_window(self): # This will be the title of the program self.master.title('Tic Tac Toe') self.pack(fill=BOTH, expand=1) # Below is the code to create some buttons in a grid # Each button has a command which is calls the button_press function with the number of the button #Create the first row of buttons button0 = Button(self, text="0", height=8, width=12, command=lambda: self.button_press(0)) button0.grid(row=1,column=1) button1 = Button(self, text="1", height=8, width=12, command=lambda: self.button_press(1)) button1.grid(row=1,column=2) button2 = Button(self, text="2", height=8, width=12, command=lambda: self.button_press(2)) button2.grid(row=1,column=3) # Create the second row of buttons button3 = Button(self, text="3", height=8, width=12, command=lambda: self.button_press(3)) button3.grid(row=2,column=1) button4 = Button(self, text="4", height=8, width=12, command=lambda: self.button_press(4)) button4.grid(row=2,column=2) button5 = Button(self, text="5", height=8, width=12, command=lambda: self.button_press(5)) button5.grid(row=2,column=3) # Create the third row of buttons # Store our buttons in a list so we can reference them later # Obviously for tic tac toe you will need another row of buttons #self.buttons = [button0, button1, button2, button3, button4, button5, button5, button6, button7, button8] self.buttons = [button0, button1, button2, button3, button4, button5, button5] def button_press(self, number): # The button press passes the index of the button which we can get from our list btn = self.buttons[number] # We then call the config method on the button and update the buttons text # Self.current_player is just a string that is set to "X" when the program starts # We also disable the button so that no one tries to move in a spot that was already taken btn.config(text = self.current_player, state=DISABLED) # After the player has made a move we switch to the next player # You will need to add logic to choose the next player based upon who just moved self.current_player = "O" self.current_player = "X" if __name__ == '__main__': root = Tk() app = Game(root) root.mainloop()