# -*- coding: utf-8 -*-
# @Time : 2020/12/3 下午6:38
# @Author : Zhenghui Lyu
# @File : main.py
# @Software: PyCharm


from tkinter import *
import random


def gen_pocker(n):  # 洗牌函数,随机产生两个下标,将次下标的两个元素交换,达到洗牌目的
    x = 100
    while x > 0:
        x = x - 1
        p1 = random.randint(0, n - 1)
        p2 = random.randint(0, n - 1)
        pocker[p1], pocker[p2] = pocker[p2], pocker[p1]
    return pocker


pocker = [i for i in range(52)]  # 梅花0-12表示;方块13-25;红桃26-38;黑桃39-51,初始化存储
pocker = gen_pocker(52)  # 洗好牌
print(pocker)  # 打印随机打乱后的顺序
(player1, player2, player3, player4) = ([], [], [], [])  # 存储各个玩家图片列表
(p1, p2, p3, p4) = ([], [], [], [])  # 各自手中的编号列表

root = Tk()
cv = Canvas(root, bg='white', width=700, height=600)  # 设置初始图
imgs = []
for i in range(1, 5):  # 四种花色
    for j in range(1, 14):  # 每种13张
        imgs.insert((i - 1) * 13 + (j - 1), PhotoImage(file=str(i) + '-' + str(j) + '.gif'))
        # imgs[0]存1-1.gif;imgs[1]存1-2.gif,以此类推

for x in range(13):  # 13轮发牌
    m = x * 4  # 0,4,8,12...
    p1.append(pocker[m])
    p2.append(pocker[m + 1])
    p3.append(pocker[m + 2])
    p4.append(pocker[m + 3])  # 依次获得洗完牌后的牌,一轮发四张

p1.sort()
p2.sort()
p3.sort()
p4.sort()

# 绘制对应的图片
for x in range(0, 13):  # x:0到12
    img = imgs[p1[x]]
    player1.append(cv.create_image((200 + 20 * x, 80), image=img))  # 在对应位置画出玩家的牌
    img = imgs[p2[x]]
    player2.append(cv.create_image((100, 150 + 20 * x), image=img))
    img = imgs[p3[x]]
    player3.append(cv.create_image((200 + 20 * x, 500), image=img))
    img = imgs[p4[x]]
    player4.append(cv.create_image((560, 150 + 20 * x), image=img))

print('player1:', player1)
print('player2:', player2)
print('player3:', player3)
print('player4:', player4)

cv.pack()
root.mainloop()

牌gif文件略。