Python+Tkinter实现经典井字棋小游戏
目录
演示介绍官方文档tkinter.messagebox源码演示
介绍
首先来介绍一下GUI库Tkinter
主要模块:
tkinter Main Tkinter module.
tkinter.colorchooser
让用户选择颜色的对话框。
tkinter.commondialog
本文其他模块定义的对话框的基类。
tkinter.filedialog
允许用户指定文件的通用对话框,用于打开或保存文件。
tkinter.font
帮助操作字体的工具。
tkinter.messagebox
访问标准的 Tk 对话框。
tkinter.scrolledtext
内置纵向滚动条的文本组件。
tkinter.simpledialog
基础对话框和一些便捷功能。
tkinter.ttk Themed widget set introduced in Tk 8.5, providing modern alternatives for many of the classic widgets in the main tkinter module.
一个小demo大家熟悉一下
from tkinter import * from tkinter import ttk root = Tk() frm = ttk.Frame(root, padding=10) frm.grid() ttk.Label(frm, text="Hello World!").grid(column=0, row=0) ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0) root.mainloop()
官方文档
我说的再好也不如去看看文档,有什么不明白的可以下方留言。嘿嘿嘿传送门
tkinter.messagebox
这部分其实我就是直接拿来用了没怎么了解,我把经常用的给大家说说
class tkinter.messagebox.Message(master=None, **options) 创建一个默认信息消息框。 信息消息框 tkinter.messagebox.showinfo(title=None, message=None, **options) 警告消息框 tkinter.messagebox.showwarning(title=None, message=None, **options) tkinter.messagebox.showerror(title=None, message=None, **options) 疑问消息框 tkinter.messagebox.askquestion(title=None, message=None, **options) tkinter.messagebox.askokcancel(title=None, message=None, **options) tkinter.messagebox.askretrycancel(title=None, message=None, **options) tkinter.messagebox.askyesno(title=None, message=None, **options) tkinter.messagebox.askyesnocancel(title=None, message=None, **options)
源码
from tkinter import * import tkinter.messagebox as msg root = Tk() root.title("TIC-TAC-TOE---Project Gurukul") # labels Label(root, text="player1 : X", font="times 15").grid(row=0, column=1) Label(root, text="player2 : O", font="times 15").grid(row=0, column=2) digits = [1, 2, 3, 4, 5, 6, 7, 8, 9] # for player1 sign = X and for player2 sign= Y mark = "" # counting the no. of click count = 0 panels = ["panel"] * 10 def win(panels, sign): return ((panels[1] == panels[2] == panels[3] == sign) or (panels[1] == panels[4] == panels[7] == sign) or (panels[1] == panels[5] == panels[9] == sign) or (panels[2] == panels[5] == panels[8] == sign) or (panels[3] == panels[6] == panels[9] == sign) or (panels[3] == panels[5] == panels[7] == sign) or (panels[4] == panels[5] == panels[6] == sign) or (panels[7] == panels[8] == panels[9] == sign)) def checker(digit): # 检查按键 if digit == 1 and digit in digits: digits.remove(digit) ##player1 will play if the value of count is even and for odd player2 will play if count % 2 == 0: mark = "X" panels[digit] = mark elif count % 2 != 0: mark = "O" panels[digit] = mark button1.config(text=mark) count = count + 1 sign = mark if (win(panels, sign) and sign == "X"): msg.showinfo("Result", "Player1 wins") root.destroy() elif (win(panels, sign) and sign == "O"): msg.showinfo("Result", "Player2 wins") root.destroy() if digit == 2 and digit in digits: digits.remove(digit) if count % 2 == 0: mark = "X" panels[digit] = mark elif count % 2 != 0: mark = "O" panels[digit] = mark button2.config(text=mark) count = count + 1 sign = mark if (win(panels, sign) and sign == "X"): msg.showinfo("Result", "Player1 wins") root.destroy() elif (win(panels, sign) and sign == "O"): msg.showinfo("Result", "Player2 wins") root.destroy() if digit == 3 and digit in digits: digits.remove(digit) if count % 2 == 0: mark = "X" panels[digit] = mark elif count % 2 != 0: mark = "O" panels[digit] = mark button3.config(text=mark) count = count + 1 sign = mark if (win(panels, sign) and sign == "X"): msg.showinfo("Result", "Player1 wins") root.destroy() elif (win(panels, sign) and sign == "O"): msg.showinfo("Result", "Player2 wins") root.destroy() if digit == 4 and digit in digits: digits.remove(digit) if count % 2 == 0: mark = "X" panels[digit] = mark elif count % 2 != 0: mark = "O" panels[digit] = mark button4.config(text=mark) count = count + 1 sign = mark if (win(panels, sign) and sign == "X"): msg.showinfo("Result", "Player1 wins") root.destroy() elif (win(panels, sign) and sign == "O"): msg.showinfo("Result", "Player2 wins") root.destroy() if digit == 5 and digit in digits: digits.remove(digit) if count % 2 == 0: mark = "X" panels[digit] = mark elif count % 2 != 0: mark = "O" panels[digit] = mark button5.config(text=mark) count = count + 1 sign = mark if (win(panels, sign) and sign == "X"): msg.showinfo("Result", "Player1 wins") root.destroy() elif (win(panels, sign) and sign == "O"): msg.showinfo("Result", "Player2 wins") root.destroy() if digit == 6 and digit in digits: digits.remove(digit) if count % 2 == 0: mark = "X" panels[digit] = mark elif count % 2 != 0: mark = "O" panels[digit] = mark button6.config(text=mark) count = count + 1 sign = mark if (win(panels, sign) and sign == "X"): msg.showinfo("Result", "Player1 wins") root.destroy() elif (win(panels, sign) and sign == "O"): msg.showinfo("Result", "Player2 wins") root.destroy() if digit == 7 and digit in digits: digits.remove(digit) if count % 2 == 0: mark = "X" panels[digit] = mark elif count % 2 != 0: mark = "O" panels[digit] = mark button7.config(text=mark) count = count + 1 sign = mark if (win(panels, sign) and sign == "X"): msg.showinfo("Result", "Player1 wins") root.destroy() elif (win(panels, sign) and sign == "O"): msg.showinfo("Result", "Player2 wins") root.destroy() if digit == 8 and digit in digits: digits.remove(digit) if count % 2 == 0: mark = "X" panels[digit] = mark elif count % 2 != 0: mark = "O" panels[digit] = mark button8.config(text=mark) count = count + 1 sign = mark if (win(panels, sign) and sign == "X"): msg.showinfo("Result", "Player1 wins") root.destroy() elif (win(panels, sign) and sign == "O"): msg.showinfo("Result", "Player2 wins") root.destroy() if digit == 9 and digit in digits: digits.remove(digit) if count % 2 == 0: mark = "X" panels[digit] = mark elif count % 2 != 0: mark = "O" panels[digit] = mark button9.config(text=mark) count = count + 1 sign = mark if (win(panels, sign) and sign == "X"): msg.showinfo("Result", "Player1 wins") root.destroy() elif (win(panels, sign) and sign == "O"): msg.showinfo("Result", "Player2 wins") root.destroy() ###if count is greater then 8 then the match has been tied if (count > 8 and win(panels, "X") == False and win(panels, "O") == False): msg.showinfo("Result", "Match Tied") root.destroy() ####定义每个格子 button1 = Button(root, width=15, font=("Times 16 bold"), height=7, command=lambda: checker(1)) button1.grid(row=1, column=1) button2 = Button(root, width=15, height=7, font=("Times 16 bold"), command=lambda: checker(2)) button2.grid(row=1, column=2) button3 = Button(root, width=15, height=7, font=("Times 16 bold"), command=lambda: checker(3)) button3.grid(row=1, column=3) button4 = Button(root, width=15, height=7, font=("Times 16 bold"), command=lambda: checker(4)) button4.grid(row=2, column=1) button5 = Button(root, width=15, height=7, font=("Times 16 bold"), command=lambda: checker(5)) button5.grid(row=2, column=2) button6 = Button(root, width=15, height=7, font=("Times 16 bold"), command=lambda: checker(6)) button6.grid(row=2, column=3) button7 = Button(root, width=15, height=7, font=("Times 16 bold"), command=lambda: checker(7)) button7.grid(row=3, column=1) button8 = Button(root, width=15, height=7, font=("Times 16 bold"), command=lambda: checker(8)) button8.grid(row=3, column=2) button9 = Button(root, width=15, height=7, font=("Times 16 bold"), command=lambda: checker(9)) button9.grid(row=3, column=3)
以上就是Python+Tkinter实现经典井字棋小游戏的详细内容,更多关于Python Tkinter井字棋的资料请关注脚本之家其它相关文章!
上一篇:go RWMutex的实现示例
下一篇:Python学习之异常处理详解
X 关闭
X 关闭
- 15G资费不大降!三大运营商谁提供的5G网速最快?中国信通院给出答案
- 2联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 3亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 4现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 5如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 6AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 7转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 8充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 9好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 10名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?