第5章 Tkinter 图形绘制——图形版发牌程序 主讲 夏敏捷 计算机学院副教授 5.1 扑克牌发牌窗体程序功能介绍 4名牌手打牌,计算机随机将52张牌(不含大王和小王)发给4名牌手,在屏幕上显示每位牌手的牌,程序的运行效果如图所示。接下来,我们以Tkinter模块图形Canvas绘制为例学习建立一些简单的GUI(图形用户界面)游戏界面。 5.2 程序设计的思路 将要发的52张牌,按梅花0…12,方块13…25,红桃26…38,黑桃39…51顺序编号并存储在pocker列表(未洗牌之前),列表元素存储的是某张牌(实际上是牌的编号)。同时按此编号顺序存储扑克牌图片imgs列表中。也就是说imgs[0]存储梅花A的图片,imgs[1]存储梅花2的图片,则imgs[14]存储方块2的图片。 发牌后,根据每位牌手(p1,p2,p3,p4)各自牌的编号列表,从imgs获取对应牌的图片并使用create_image((x坐标,y坐标), image =图像文件)显示在指定位置。 5.3 Canvas图形绘制技术 5.3.1 Canvas画布组件 Canvas (画布)是一个长方形的区域,用于图形绘制或复杂的图形界面布局。可以在画布上绘制图形、文字,放置各种组件和框架。 5.3 图形绘制 5.3.2 Canvas上的图形对象 Canvas画布上可以绘制各种图形对象。通过调用如下绘制函数实现。 create_arc( )绘制圆弧。 create_line( ) 绘制直线。 create_bitmap( )绘制位图。 create_image( )绘制位图图像。 create_oval( ) 绘制椭圆。 create_polygon( ) 绘制多边形。 create_window( ) 绘制子窗口。 create_text( )创建一个文字对象 图形对象id、标记(tag) id1=cv. create_line(10,10,100,80,width=2, dash=7) #绘制直线 id1可以得到绘制对象直线id。 使用属性tags设置图形对象的标记(tag) rt = cv.create_rectangle(10,10,110,110, tags = 'r1') 上面的语句指定矩形对象rt具有一个标记r1。 rt = cv.create_rectangle(10,10,110,110, tags = ('r1','r2','r3')) 上面的语句指定矩形对象rt具有3个标记r1,r2,r3。 使用find_withtag('r1')方法可以获取到指定tag的图形对象。 【例5-1】使用属性tags设置图形对象标记的例子。 from tkinter import * root = Tk() # 创建一个Canvas,设置其背景色为白色 cv = Canvas(root, bg = 'white', width = 200, height = 200) # 使用tags指定给第一个矩形指定3个tag rt = cv.create_rectangle(10,10,110,110, tags = ('r1','r2','r3')) cv.pack() cv.create_rectangle(20,20,80,80, tags = 'r3') #使用tags指定给第2个矩形指定1个tag # 将所有与tag('r3')绑定的item边框颜色设置为蓝色 for item in cv.find_withtag('r3'): cv.itemconfig(item,outline = 'blue') root.mainloop() 2.绘制圆弧 Canvas对象. create_arc(弧外框矩形左上角的x坐标, 弧外框矩形左上角的y坐标, 弧外框矩形右下角的x坐标, 弧外框矩形右下角的y坐标, 选项, ...) 【例5-2】使用create_ arc ()方法创建圆弧的例子。 3.绘制线条 canvas.create_line(x0, y0, x1, y1, ..., xn, yn, 选项) 参数x0, y0, x1, y1, ..., xn, yn是线段的端点。 【例5-3】使用create_line()方法创建线条对象的例子。 from tkinter import * root = Tk() cv = Canvas(root, bg = 'white', width = 200, height = 100) cv.create_line(10, 10, 100, 10, arrow='none')#绘制没有箭头线段 cv.create_line(10, 20, 100, 20, arrow
python游戏设计案例实战_Python游戏设计案例实战第5章 Tkinter图形界面设计——图形版发牌程序(20页)-原创力文档...
最新推荐文章于 2021-01-13 23:08:04 发布