Python GUI编程:Tkinter模块练习开发一个猜数字和发牌游戏
基于我们前面学习的内容,我们已经可以进行一些小程序的开发,本节我们就来通过两个练习来进一步掌握相关知识。
1. 猜数字
使用Tkinter开发一个猜数字游戏,运行效果如图所示。游戏中电脑随机生成1024以内数字,使用者去猜,如果猜得数字过大过小都会进行提示并把范围缩小,程序要统计玩家猜的次数,最后提示猜测次数。
点击猜之后会呈现下图界面:
程序代码如下:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 | from tkinter
import *
import random
number
= random.randint(
,
1024
)
running
= True
num
=
minn
=
maxx
= 1024
def Close(event):
root.destroy()
def Guess(event):
global running
global num
global minn
global maxx
if running:
guess1
= int
(events.get())
if guess1
=
= number:
labelqval(
'恭喜答对了'
)
num
+
=
1
running
= False
numGuess()
elif guess1minn:
minn
= guess1
num
+
=
1
labelqval(
'猜小了哦!,请输入'
+
str
(minn)
+
'到'
+
str
(maxx)
+
'之间的任意整数'
)
else :
if guess1
):
x
= x
-
1
p1
= random.randint(
,n
-
1
)
p2
= random.randint(
,n
-
1
)
t
= pocker[p1]
pocker[p1]
= pocker[p2]
pocker[p2]
= t
return pocker
pocker
= [i
for i
in range
(n)]
pocker
= gen_pocker(n)
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
):
imgs.insert((i
-
1
)
*
13
+
(j
-
1
),PhotoImage(
file = r
'C:/Users/轻烟/PycharmProjects/untitled1/teach/puke-images/' + str
(i)
+ "-" + str
(j)
+ ".gif"
))
for x
in range
(
13
):
m
=
x
*
4
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
(
,
13
):
#注意下面是画布的功能使用,对象为图片对象,前面为它的具体位置,我们可以通过更改位置信息来显示牌的具体定位
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() |
这个题目的实现原理我们在前面的例题中已经分析过,在这里我们只要注意我们使用了图形界面去把每张牌的数字去对应每一个图片,然后我们在通过canvas控件的定位功能把所有的牌在画布中显示出来,使用的过程中一定要注意图片的路径问题。
3. 总结
关于Tkinter的学习我们就到这里,通过这些功能我们可以进行简单的登录界面,去设计UI界面,使用相关控件去开发程序,下面我们来学习另外一个GUI模块——wxPython。