python使用tkinter库实现五子棋游戏


Posted in Python onJune 18, 2019

本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下

一、运行截图:

python使用tkinter库实现五子棋游戏

python使用tkinter库实现五子棋游戏

python使用tkinter库实现五子棋游戏

python使用tkinter库实现五子棋游戏

二、代码

# 用数组定义一个棋盘,棋盘大小为 15×15
# 数组索引代表位置,
# 元素值代表该位置的状态:0代表没有棋子,1代表有黑棋,-1代表有白棋。
    
from tkinter import *
from tkinter.messagebox import *
 
 
class Chess(object):
 
 def __init__(self):
  #############
  # param #
  #######################################
  self.row, self.column = 15, 15
  self.mesh = 25
  self.ratio = 0.9
  self.board_color = "#CDBA96"
  self.header_bg = "#CDC0B0"
  self.btn_font = ("黑体", 12, "bold")
  self.step = self.mesh / 2
  self.chess_r = self.step * self.ratio
  self.point_r = self.step * 0.2
  self.matrix = [[0 for y in range(self.column)] for x in range(self.row)]
  self.is_start = False
  self.is_black = True
  self.last_p = None
 
  ###########
  # GUI #
  #######################################
  self.root = Tk()
  self.root.title("Gobang By Young")
  self.root.resizable(width=False, height=False)
 
  self.f_header = Frame(self.root, highlightthickness=0, bg=self.header_bg)
  self.f_header.pack(fill=BOTH, ipadx=10)
 
  self.b_start = Button(self.f_header, text="开始", command=self.bf_start, font=self.btn_font)
  self.b_restart = Button(self.f_header, text="重来", command=self.bf_restart, state=DISABLED, font=self.btn_font)
  self.l_info = Label(self.f_header, text="未开始", bg=self.header_bg, font=("楷体", 18, "bold"), fg="white")
  self.b_regret = Button(self.f_header, text="悔棋", command=self.bf_regret, state=DISABLED, font=self.btn_font)
  self.b_lose = Button(self.f_header, text="认输", command=self.bf_lose, state=DISABLED, font=self.btn_font)
 
  self.b_start.pack(side=LEFT, padx=20)
  self.b_restart.pack(side=LEFT)
  self.l_info.pack(side=LEFT, expand=YES, fill=BOTH, pady=10)
  self.b_lose.pack(side=RIGHT, padx=20)
  self.b_regret.pack(side=RIGHT)
 
  self.c_chess = Canvas(self.root, bg=self.board_color, width=(self.column + 1) * self.mesh,
        height=(self.row + 1) * self.mesh, highlightthickness=0)
  self.draw_board()
  self.c_chess.bind("<Button-1>", self.cf_board)
  self.c_chess.pack()
 
  self.root.mainloop()
 
 # 画x行y列处的网格
 def draw_mesh(self, x, y):
  # 一个倍率,由于tkinter操蛋的GUI,如果不加倍率,悔棋的时候会有一点痕迹,可以试试把这个改为1,就可以看到
  ratio = (1 - self.ratio) * 0.99 + 1
  center_x, center_y = self.mesh * (x + 1), self.mesh * (y + 1)
  # 先画背景色
  self.c_chess.create_rectangle(center_y - self.step, center_x - self.step,
          center_y + self.step, center_x + self.step,
          fill=self.board_color, outline=self.board_color)
  # 再画网格线,这里面a b c d是不同的系数,根据x,y不同位置确定,需要一定推导。
  a, b = [0, ratio] if y == 0 else [-ratio, 0] if y == self.row - 1 else [-ratio, ratio]
  c, d = [0, ratio] if x == 0 else [-ratio, 0] if x == self.column - 1 else [-ratio, ratio]
  self.c_chess.create_line(center_y + a * self.step, center_x, center_y + b * self.step, center_x)
  self.c_chess.create_line(center_y, center_x + c * self.step, center_y, center_x + d * self.step)
 
  # 有一些特殊的点要画小黑点
  if ((x == 3 or x == 11) and (y == 3 or y == 11)) or (x == 7 and y == 7):
   self.c_chess.create_oval(center_y - self.point_r, center_x - self.point_r,
          center_y + self.point_r, center_x + self.point_r, fill="black")
 
 # 画x行y列处的棋子,color指定棋子颜色
 def draw_chess(self, x, y, color):
  center_x, center_y = self.mesh * (x + 1), self.mesh * (y + 1)
  # 就是画个圆
  self.c_chess.create_oval(center_y - self.chess_r, center_x - self.chess_r,
         center_y + self.chess_r, center_x + self.chess_r,
         fill=color)
 
 # 画整个棋盘
 def draw_board(self):
  [self.draw_mesh(x, y) for y in range(self.column) for x in range(self.row)]
 
 # 在正中间显示文字
 def center_show(self, text):
  width, height = int(self.c_chess['width']), int(self.c_chess['height'])
  self.c_chess.create_text(int(width / 2), int(height / 2), text=text, font=("黑体", 30, "bold"), fill="red")
 
 # 开始的时候设置各个组件,变量的状态,初始化matrix矩阵,初始化棋盘,初始化信息
 def bf_start(self):
  self.set_btn_state("start")
  self.is_start = True
  self.is_black = True
  self.matrix = [[0 for y in range(self.column)] for x in range(self.row)]
  self.draw_board()
  self.l_info.config(text="黑方下棋")
 
 # 重来跟开始的效果一样
 def bf_restart(self):
  self.bf_start()
 
 # 用last_p来标识上一步的位置。先用网格覆盖掉棋子,操作相应的变量,matrix[x][y]要置空,只能悔一次棋
 def bf_regret(self):
  if not self.last_p:
   showinfo("提示", "现在不能悔棋")
   return
  x, y = self.last_p
  self.draw_mesh(x, y)
  self.matrix[x][y] = 0
  self.last_p = None
  self.trans_identify()
 
 # 几个状态改变,还有显示文字,没什么说的
 def bf_lose(self):
  self.set_btn_state("init")
  self.is_start = False
  text = self.ternary_operator("黑方认输", "白方认输")
  self.l_info.config(text=text)
  self.center_show("蔡")
 
 # Canvas的click事件
 def cf_board(self, e):
  # 找到离点击点最近的坐标
  x, y = int((e.y - self.step) / self.mesh), int((e.x - self.step) / self.mesh)
  # 找到该坐标的中心点位置
  center_x, center_y = self.mesh * (x + 1), self.mesh * (y + 1)
  # 计算点击点到中心的距离
  distance = ((center_x - e.y) ** 2 + (center_y - e.x) ** 2) ** 0.5
  # 如果距离不在规定的圆内,退出//如果这个位置已经有棋子,退出//如果游戏还没开始,退出
  if distance > self.step * 0.95 or self.matrix[x][y] != 0 or not self.is_start:
   return
  # 此时棋子的颜色,和matrix中该棋子的标识。
  color = self.ternary_operator("black", "white")
  tag = self.ternary_operator(1, -1)
  # 先画棋子,在修改matrix相应点的值,用last_p记录本次操作点
  self.draw_chess(x, y, color)
  self.matrix[x][y] = tag
  self.last_p = [x, y]
  # 如果赢了,则游戏结束,修改状态,中心显示某方获胜
  if self.is_win(x, y, tag):
   self.is_start = False
   self.set_btn_state("init")
   text = self.ternary_operator("黑方获胜", "白方获胜")
   self.center_show(text)
   return
  # 如果游戏继续,则交换棋手
  self.trans_identify()
 
 def is_win(self, x, y, tag):
  # 获取斜方向的列表
  def direction(i, j, di, dj, row, column, matrix):
   temp = []
   while 0 <= i < row and 0 <= j < column:
    i, j = i + di, j + dj
   i, j = i - di, j - dj
   while 0 <= i < row and 0 <= j < column:
    temp.append(matrix[i][j])
    i, j = i - di, j - dj
   return temp
 
  four_direction = []
  # 获取水平和竖直方向的列表
  four_direction.append([self.matrix[i][y] for i in range(self.row)])
  four_direction.append([self.matrix[x][j] for j in range(self.column)])
  # 获取斜方向的列表
  four_direction.append(direction(x, y, 1, 1, self.row, self.column, self.matrix))
  four_direction.append(direction(x, y, 1, -1, self.row, self.column, self.matrix))
 
  # 一一查看这四个方向,有没有满足五子连珠
  for v_list in four_direction:
   count = 0
   for v in v_list:
    if v == tag:
     count += 1
     if count == 5:
      return True
    else:
     count = 0
  return False
 
 # 设置四个按钮是否可以点击
 def set_btn_state(self, state):
  state_list = [NORMAL, DISABLED, DISABLED, DISABLED] if state == "init" else [DISABLED, NORMAL, NORMAL, NORMAL]
  self.b_start.config(state=state_list[0])
  self.b_restart.config(state=state_list[1])
  self.b_regret.config(state=state_list[2])
  self.b_lose.config(state=state_list[3])
 
 # 因为有很多和self.black相关的三元操作,所以就提取出来
 def ternary_operator(self, true, false):
  return true if self.is_black else false
 
 # 交换棋手
 def trans_identify(self):
  self.is_black = not self.is_black
  text = self.ternary_operator("黑方下棋", "白方下棋")
  self.l_info.config(text=text)
 
 
if __name__ == '__main__':
 Chess()

三、增加复盘和保存棋谱功能

直接贴可以运行的源码,添加了两个按键和一个页面。

python使用tkinter库实现五子棋游戏

python使用tkinter库实现五子棋游戏

python使用tkinter库实现五子棋游戏

# 用数组定义一个棋盘,棋盘大小为 15×15
# 数组索引代表位置,
# 元素值代表该位置的状态:0代表没有棋子,1代表有黑棋,-1代表有白棋。
 
from tkinter import *
from tkinter.messagebox import *
import os
 
TAG_BLACK = "1"
TAG_EMPTY = "."
TAG_WHITE = "0"
ROOT_DIR = os.path.abspath(os.path.dirname(os.path.abspath(__file__)) + os.path.sep + ".")
 
 
class Chess(object):
 
 def bf_save(self):
 
  path = os.path.join(ROOT_DIR, "record.txt")
  file = open(path, "w")
  for i in range(len(self.record)):
   x, y = self.record[i]
   file.write("{}: [{}, {}]\n".format("黑方" if i % 2 == 0 else "白方", x, y))
  file.close()
 
 def init_matrix(self):
  return [[TAG_EMPTY for y in range(self.column)] for x in range(self.row)]
 
 def __init__(self):
  #############
  # param #
  #######################################
  self.row, self.column = 15, 15
  self.mesh = 25
  self.ratio = 0.9
  self.board_color = "#CDBA96"
  self.header_bg = "#CDC0B0"
  self.btn_font = ("黑体", 12, "bold")
  self.step = self.mesh / 2
  self.chess_r = self.step * self.ratio
  self.point_r = self.step * 0.2
  self.matrix = self.init_matrix()
  self.is_start = False
  self.is_black = True
  self.record = []
 
  ###########
  # GUI #
  #######################################
  self.root = Tk()
  self.root.title("Gobang By Young")
  self.root.resizable(width=False, height=False)
 
  self.f_header = Frame(self.root, highlightthickness=0, bg=self.header_bg)
 
  self.b_start = Button(self.f_header, text="开始", command=self.bf_start, font=self.btn_font)
  self.b_restart = Button(self.f_header, text="重来", command=self.bf_restart, state=DISABLED, font=self.btn_font)
  self.l_info = Label(self.f_header, text="未开始", bg=self.header_bg, font=("楷体", 18, "bold"), fg="white")
  self.b_regret = Button(self.f_header, text="悔棋", command=self.bf_regret, state=DISABLED, font=self.btn_font)
  self.b_lose = Button(self.f_header, text="认输", command=self.bf_lose, state=DISABLED, font=self.btn_font)
 
  self.c_chess = Canvas(self.root, bg=self.board_color, width=(self.column + 1) * self.mesh,
        height=(self.row + 1) * self.mesh, highlightthickness=0)
  self.draw_board()
  self.c_chess.bind("<Button-1>", self.cf_board)
 
  self.b_record = Button(self.root, text="复 盘", command=self.bf_record, font=self.btn_font, bg="lightblue")
  self.b_save = Button(self.root, text="保 存", command=self.bf_save, font=self.btn_font, bg="lightblue")
 
  self.f_header.pack(side=TOP, fill=BOTH, ipadx=10)
  self.b_start.pack(side=LEFT, padx=20)
  self.b_restart.pack(side=LEFT)
  self.l_info.pack(side=LEFT, expand=YES, fill=BOTH, pady=10)
  self.b_lose.pack(side=RIGHT, padx=20)
  self.b_regret.pack(side=RIGHT)
 
  self.c_chess.pack(side=TOP)
 
  self.b_record.pack(side=TOP, expand=YES, fill=X)
  self.b_save.pack(side=TOP, expand=YES, fill=X)
 
  self.root.mainloop()
 
 # 画x行y列处的网格
 def draw_mesh(self, x, y):
  # 一个倍率,由于tkinter操蛋的GUI,如果不加倍率,悔棋的时候会有一点痕迹,可以试试把这个改为1,就可以看到
  ratio = (1 - self.ratio) * 0.99 + 1
  center_x, center_y = self.mesh * (x + 1), self.mesh * (y + 1)
  # 先画背景色
  self.c_chess.create_rectangle(center_y - self.step, center_x - self.step,
          center_y + self.step, center_x + self.step,
          fill=self.board_color, outline=self.board_color)
  # 再画网格线,这里面a b c d是不同的系数,根据x,y不同位置确定,需要一定推导。
  a, b = [0, ratio] if y == 0 else [-ratio, 0] if y == self.row - 1 else [-ratio, ratio]
  c, d = [0, ratio] if x == 0 else [-ratio, 0] if x == self.column - 1 else [-ratio, ratio]
  self.c_chess.create_line(center_y + a * self.step, center_x, center_y + b * self.step, center_x)
  self.c_chess.create_line(center_y, center_x + c * self.step, center_y, center_x + d * self.step)
 
  # 有一些特殊的点要画小黑点
  if ((x == 3 or x == 11) and (y == 3 or y == 11)) or (x == 7 and y == 7):
   self.c_chess.create_oval(center_y - self.point_r, center_x - self.point_r,
          center_y + self.point_r, center_x + self.point_r, fill="black")
 
 # 画x行y列处的棋子,color指定棋子颜色
 def draw_chess(self, x, y, color):
  center_x, center_y = self.mesh * (x + 1), self.mesh * (y + 1)
  # 就是画个圆
  self.c_chess.create_oval(center_y - self.chess_r, center_x - self.chess_r,
         center_y + self.chess_r, center_x + self.chess_r,
         fill=color)
 
 # 画整个棋盘
 def draw_board(self):
  [self.draw_mesh(x, y) for y in range(self.column) for x in range(self.row)]
 
 # 在正中间显示文字
 def center_show(self, text):
  width, height = int(self.c_chess['width']), int(self.c_chess['height'])
  self.c_chess.create_text(int(width / 2), int(height / 2), text=text, font=("黑体", 30, "bold"), fill="red")
 
 def bf_record(self):
  Record(self.record)
  pass
 
 # 开始的时候设置各个组件,变量的状态,初始化matrix矩阵,初始化棋盘,初始化信息
 def bf_start(self):
  self.set_btn_state("start")
  self.is_start = True
  self.is_black = True
  self.matrix = self.init_matrix()
  self.draw_board()
  self.record = []
  self.l_info.config(text="黑方下棋")
 
 # 重来跟开始的效果一样
 def bf_restart(self):
  self.record = []
  self.bf_start()
 
 # 用last_p来标识上一步的位置。先用网格覆盖掉棋子,操作相应的变量,matrix[x][y]要置空,只能悔一次棋
 def bf_regret(self):
  if len(self.record) == 0:
   showinfo("提示", "现在不能悔棋")
   return
  x, y = self.record[-1]
  self.draw_mesh(x, y)
  self.matrix[x][y] = TAG_EMPTY
  self.record = self.record[:-1]
  self.trans_identify()
 
 # 几个状态改变,还有显示文字,没什么说的
 def bf_lose(self):
  self.set_btn_state("init")
  self.is_start = False
  text = self.ternary_operator("黑方认输", "白方认输")
  self.l_info.config(text=text)
  self.center_show("蔡")
 
 def go_chess(self, x, y):
  # 此时棋子的颜色,和matrix中该棋子的标识。
  color = self.ternary_operator("black", "white")
  tag = self.ternary_operator(TAG_BLACK, TAG_WHITE)
  # 先画棋子,在修改matrix相应点的值,用last_p记录本次操作点
  self.draw_chess(x, y, color)
  self.matrix[x][y] = tag
  self.record.append([x, y])
  # 如果赢了,则游戏结束,修改状态,中心显示某方获胜
  if self.is_win(x, y, tag):
   self.is_start = False
   self.set_btn_state("init")
   text = self.ternary_operator("黑方获胜", "白方获胜")
   self.center_show(text)
   return
  # 如果游戏继续,则交换棋手
  self.trans_identify()
 
 # Canvas的click事件
 def cf_board(self, e):
  # 找到离点击点最近的坐标
  x, y = int((e.y - self.step) / self.mesh), int((e.x - self.step) / self.mesh)
  # 找到该坐标的中心点位置
  center_x, center_y = self.mesh * (x + 1), self.mesh * (y + 1)
  # 计算点击点到中心的距离
  distance = ((center_x - e.y) ** 2 + (center_y - e.x) ** 2) ** 0.5
  # 如果距离不在规定的圆内,退出//如果这个位置已经有棋子,退出//如果游戏还没开始,退出
  if distance > self.step * 0.95 or self.matrix[x][y] != TAG_EMPTY or not self.is_start:
   return
  self.go_chess(x, y)
 
 def is_win(self, x, y, tag):
  # 获取斜方向的列表
  def direction(i, j, di, dj, row, column, matrix):
   temp = []
   while 0 <= i < row and 0 <= j < column:
    i, j = i + di, j + dj
   i, j = i - di, j - dj
   while 0 <= i < row and 0 <= j < column:
    temp.append(matrix[i][j])
    i, j = i - di, j - dj
   return temp
 
  four_direction = []
  # 获取水平和竖直方向的列表
  four_direction.append([self.matrix[i][y] for i in range(self.row)])
  four_direction.append([self.matrix[x][j] for j in range(self.column)])
  # 获取斜方向的列表
  four_direction.append(direction(x, y, 1, 1, self.row, self.column, self.matrix))
  four_direction.append(direction(x, y, 1, -1, self.row, self.column, self.matrix))
 
  # 一一查看这四个方向,有没有满足五子连珠
  for v_list in four_direction:
   if tag * 5 in "".join(v_list):
    return True
  return False
 
 # 设置四个按钮是否可以点击
 def set_btn_state(self, state):
  state_list = [NORMAL, DISABLED, DISABLED, DISABLED] if state == "init" else [DISABLED, NORMAL, NORMAL, NORMAL]
  self.b_start.config(state=state_list[0])
  self.b_restart.config(state=state_list[1])
  self.b_regret.config(state=state_list[2])
  self.b_lose.config(state=state_list[3])
 
 # 因为有很多和self.black相关的三元操作,所以就提取出来
 def ternary_operator(self, true, false):
  return true if self.is_black else false
 
 # 交换棋手
 def trans_identify(self):
  self.is_black = not self.is_black
  text = self.ternary_operator("黑方下棋", "白方下棋")
  self.l_info.config(text=text)
 
 def print_process(self):
  pass
 
 
class Record(object):
 
 def __init__(self, record):
  #############
  # param #
  #######################################
  self.row, self.column = 15, 15
  self.mesh = 25
  self.ratio = 0.9
  self.board_color = "#CDBA96"
  self.header_bg = "#CDC0B0"
  self.btn_font = ("黑体", 12, "bold")
  self.step = self.mesh / 2
  self.chess_r = self.step * self.ratio
  self.point_r = self.step * 0.2
  ###########
  self.is_black = True
  self.index = -1
  self.record = record
  ###########
  # GUI #
  #######################################
  self.root = Tk()
  self.root.title("复盘")
  self.root.resizable(width=False, height=False)
  self.root.bind("<Key>", self.kf_step)
 
  self.f_header = Frame(self.root, highlightthickness=0, bg=self.header_bg)
  self.l_info = Label(self.f_header, text="未开始", bg=self.header_bg, font=("楷体", 18, "bold"), fg="white")
 
  self.c_chess = Canvas(self.root, bg=self.board_color, width=(self.column + 1) * self.mesh,
        height=(self.row + 1) * self.mesh, highlightthickness=0)
  self.draw_board()
 
  self.f_header.pack(fill=BOTH, ipadx=10)
  self.l_info.pack(side=LEFT, expand=YES, fill=BOTH, pady=10)
  self.c_chess.pack()
 
  self.root.mainloop()
 
 def kf_step(self, e):
  if e.keycode not in [37, 39]:
   return
  if e.keycode == 37:
   if self.index == -1:
    self.l_info.config(text="已经走到最开始了")
    return
   x, y = self.record[self.index]
   self.draw_mesh(x, y)
   if self.index == 0:
    self.l_info.config(text="未开始")
   else:
    self.l_info.config(text="黑方走棋" if self.is_black else "白方走棋")
   self.is_black = not self.is_black
   self.index -= 1
   if self.index > 0:
    x, y = self.record[self.index]
    color = "white" if self.is_black else "black"
    self.draw_chess(x, y, color, "red")
 
  elif e.keycode == 39:
   if self.index == len(self.record) - 1:
    self.l_info.config(text="已经走到最末尾了")
    return
   self.index += 1
   x, y = self.record[self.index]
   color = "black" if self.is_black else "white"
   self.draw_chess(x, y, color, "red")
   if self.index > 0:
    x, y = self.record[self.index - 1]
    color = "white" if self.is_black else "black"
    self.draw_chess(x, y, color)
   self.l_info.config(text="黑方走棋" if self.is_black else "白方走棋")
   self.is_black = not self.is_black
  else:
   pass
 
 # 画x行y列处的网格
 def draw_mesh(self, x, y):
  # 一个倍率,由于tkinter操蛋的GUI,如果不加倍率,悔棋的时候会有一点痕迹,可以试试把这个改为1,就可以看到
  ratio = (1 - self.ratio) * 0.99 + 1
  center_x, center_y = self.mesh * (x + 1), self.mesh * (y + 1)
  # 先画背景色
  self.c_chess.create_rectangle(center_y - self.step, center_x - self.step,
          center_y + self.step, center_x + self.step,
          fill=self.board_color, outline=self.board_color)
  # 再画网格线,这里面a b c d是不同的系数,根据x,y不同位置确定,需要一定推导。
  a, b = [0, ratio] if y == 0 else [-ratio, 0] if y == self.row - 1 else [-ratio, ratio]
  c, d = [0, ratio] if x == 0 else [-ratio, 0] if x == self.column - 1 else [-ratio, ratio]
  self.c_chess.create_line(center_y + a * self.step, center_x, center_y + b * self.step, center_x)
  self.c_chess.create_line(center_y, center_x + c * self.step, center_y, center_x + d * self.step)
 
  # 有一些特殊的点要画小黑点
  if ((x == 3 or x == 11) and (y == 3 or y == 11)) or (x == 7 and y == 7):
   self.c_chess.create_oval(center_y - self.point_r, center_x - self.point_r,
          center_y + self.point_r, center_x + self.point_r, fill="black")
 
 # 画x行y列处的棋子,color指定棋子颜色
 def draw_chess(self, x, y, color, outline="black"):
  center_x, center_y = self.mesh * (x + 1), self.mesh * (y + 1)
  # 就是画个圆
  self.c_chess.create_oval(center_y - self.chess_r, center_x - self.chess_r,
         center_y + self.chess_r, center_x + self.chess_r,
         fill=color, outline=outline)
 
 # 画整个棋盘
 def draw_board(self):
  [self.draw_mesh(x, y) for y in range(self.column) for x in range(self.row)]
 
 # 在正中间显示文字
 def center_show(self, text):
  width, height = int(self.c_chess['width']), int(self.c_chess['height'])
  self.c_chess.create_text(int(width / 2), int(height / 2), text=text, font=("黑体", 30, "bold"), fill="red")
 
 # 开始的时候设置各个组件,变量的状态,初始化matrix矩阵,初始化棋盘,初始化信息
 
 
if __name__ == '__main__':
 Chess()

 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
合并百度影音的离线数据( with python 2.3)
Aug 04 Python
python使用xlrd与xlwt对excel的读写和格式设定
Jan 21 Python
python3下使用cv2.imwrite存储带有中文路径图片的方法
May 10 Python
python将秒数转化为时间格式的实例
Sep 16 Python
python next()和iter()函数原理解析
Feb 07 Python
Python3运算符常见用法分析
Feb 14 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
在django admin中配置搜索域是一个外键时的处理方法
May 20 Python
pycharm中使用request和Pytest进行接口测试的方法
Jul 31 Python
序列化Python对象的方法
Aug 01 Python
python将字典内容写入json文件的实例代码
Aug 12 Python
Numpy实现卷积神经网络(CNN)的示例
Oct 09 Python
Python基础学习之基本数据结构详解【数字、字符串、列表、元组、集合、字典】
Jun 18 #Python
python 弹窗提示警告框MessageBox的实例
Jun 18 #Python
python实现五子棋小程序
Jun 18 #Python
Python 实现还原已撤回的微信消息
Jun 18 #Python
PyQt4编程之让状态栏显示信息的方法
Jun 18 #Python
Python直接赋值、浅拷贝与深度拷贝实例分析
Jun 18 #Python
python实现五子棋游戏
Jun 18 #Python
You might like
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
Jquery 设置标题的自动翻转
2009/10/03 Javascript
firefox下jquery iframe刷新页面提示会导致重复之前动作
2012/12/17 Javascript
JS/FLASH实现复制代码到剪贴板(兼容所有浏览器)
2013/05/27 Javascript
浅析JS刷新框架中的其他页面 &amp;&amp; JS刷新窗口方法汇总
2013/07/08 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
JS基于Ajax实现的网页Loading效果代码
2015/10/27 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
Bootstrap 下拉多选框插件Bootstrap Multiselect
2017/01/22 Javascript
jQuery EasyUI 组件加上“清除”功能实例详解
2017/04/11 jQuery
jQuery插件FusionCharts绘制的2D双面积图效果示例【附demo源码】
2017/04/11 jQuery
Angularjs实现控制器之间通信方式实例总结
2018/03/27 Javascript
[01:03:36]Ti4 循环赛第三日DK vs Titan
2014/07/12 DOTA
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
[02:31]2018年度DOTA2最具人气选手-完美盛典
2018/12/16 DOTA
Python的Django框架中if标签的相关使用
2015/07/15 Python
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
DJANGO-URL反向解析REVERSE实例讲解
2019/10/25 Python
PyQt5中多线程模块QThread使用方法的实现
2020/01/31 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
英国最大最好的无人机商店:Drones Direct
2019/07/12 全球购物
门卫人员岗位职责
2013/12/24 职场文书
什么样的创业计划书可行性高?
2014/02/01 职场文书
小学音乐教学反思
2014/02/05 职场文书
群众路线教育实践活动的心得体会
2014/09/03 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
会计工作能力自我评价
2015/03/05 职场文书
工程移交协议书
2016/03/24 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL