PS:“天上的每一颗星,都是爱过我们的人。”

不要太过惋惜亲人的离去,因为早晚有一天我们会在天上重逢。

在人间活着的日子,我们都有一个归期,而那些逝去的人,会希望我们好好地活下去。

——【人生大事】

我爱这离合悲欢,爱这烟火人间,电影《人生大事》将于6月24日上映。

很多人期待的电影点映不知道有人去看了没?小编刚好卡点去了第一场,这是一部笑着笑着就哭了的电影。之后要看的小伙伴儿记得带点儿纸巾哈。

今天小编就教大家写一款电影院选票系统给大家。

一、准备中

1)环境安装

本文是基于tkinter的界面化小程序!初级版本写的一个简单的选票系统哈。

小编使用的环境:Python3、Pycharm社区版、tkinter、turtle、Pillow模块,部分自带模块不展示。

模块安装:pip install -i https://pypi.douban.com/simple/+模块名

2)素材准备

电影院座位是用Turtle绘制完成的。电影院的购票界面是Tkinter写的。

座位背景

界面电影选项素材(自选:小编随便找的几部截图的哈)话说下面的我还看过几部呢~

二、代码展示

1)制作选票系统界面、按钮等等。

import tkinter as tkfrom PIL import Imagefrom PIL import ImageTkimport turtlefrom tkinter import messageboxfrom cinemaclass import Movie as Mdef mainGui(x, y, z):image = Image.open(x)photo = ImageTk.PhotoImage(image)label = tk.Label(image=photo, width=300, height=300)label.image = photolabel.place(relx=y, rely=z)window = tk.Tk()moives = []
lst = []for i in range(1, 9):moives.append(M(str(i)))def xuanpiao(x):global window, moiveswindow1 = tk.Tk()window1.geometry('1330x700')click = ()    def callback(event):# print("clicked at:", event.x, event.y)  # 打印出该事件(按下鼠标)的x,y轴# 打印出该事件(按下鼠标)的x,y轴s = (event.x, event.y)  # 把它写到一个元组里x, y = s        if (160 <= x <= 760) and (100 <= y <= 550):            global click, lstrow = int((x - 160) / 60)col = int((y - 100) / 45)click = (col + 1, row + 1)print(lst)            if movie.isbook(col + 1, row + 1) == False:lst.append(click)drawp(canva, movie, lst)            else:messagebox.showinfo("该位置已购买!")    def yyyyyyyyyyyyyy(num):global moivesmo = moives[x]        if num == 0:            global lstsp = '是否购买'if lst == []:messagebox.showinfo("请选座!")                return Nonefor l in lst:col, row = lsp += f'{col}排{row}列 'sp += "的座位?"y = messagebox.askyesno("确认", sp)            if y:                for l in lst:col, row = lmo.book(col, row)mo.save('data')lst=[]window1.destroy()            else:lst = []drawp(canva, movie, [], lst)lst = []window1.destroy()b2 = tk.Button(window1, text='确认购座', font=('楷书', 12), command=lambda: yyyyyyyyyyyyyy(0))b2.pack(side=tk.LEFT)b2 = tk.Button(window1, text='返回', font=('楷书', 12), command=lambda: yyyyyyyyyyyyyy(1))b2.pack(side=tk.LEFT)window1.bind("<Button-1>", callback)    if x == 1:window1.title('电影《你的世界如果没有我》请选择座位')    elif x == 2:window1.title('电影《只要你过得比我好》请选择座位')    elif x == 3:window1.title('电影《扬名立万》请选择座位')    elif x == 4:window1.title('电影《梅艳芳》请选择座位')    elif x == 5:window1.title('电影《笨鸟大冒险》请选择座位')    elif x == 6:window1.title('电影《古董局中局》请选择座位')    elif x == 7:window1.title('电影《长津湖》请选择座位')    else:window1.title('电影《门锁》请选择座位')movie = moives[x]    def drawp(canva, moive: M, lst=None, lst2=None):if lst == None:lst = []        if lst2 == None:lst2 = []        from turtle import ShapetheScreen = turtle.TurtleScreen(canva)t = turtle.RawTurtle(theScreen, visible=True)s = Shape("compound")poly2 = ((-20, -10), (-30, -10), (-30, 15), (30, 15), (30, -10), (20, -10))s.addcomponent(poly2, "pink", "black")poly1 = ((0, 0), (10, 0), (10, -10), (20, -10), (20, -30), (-20, -30), (-20, -10), (-10, -10), (-10, 0), (0, 0),)s.addcomponent(poly1, "white", "black")theScreen.register_shape("myshape1", s)s2 = Shape("compound")        # poly2 = ((-10.0, -5.0), (-15.0, -5.0), (-15.0, 7.5), (15.0, 7.5), (15.0, -5.0), (10.0, -5.0))s2.addcomponent(poly2, "white", "black")        # poly1 = ((0.0, 0.0), (5.0, 0.0), (5.0, -5.0), (10.0, -5.0), (10.0, -15.0), (-10.0, -15.0), (-10.0, -5.0), (-5.0, -5.0), (-5.0, 0.0), (0.0, 0.0))s2.addcomponent(poly1, "red", "black")theScreen.register_shape("myshape2", s2)s3 = Shape("compound")        # poly2 = ((-10.0, -5.0), (-15.0, -5.0), (-15.0, 7.5), (15.0, 7.5), (15.0, -5.0), (10.0, -5.0))s3.addcomponent(poly2, "white", "black")        # poly1 = ((0.0, 0.0), (5.0, 0.0), (5.0, -5.0), (10.0, -5.0), (10.0, -15.0), (-10.0, -15.0), (-10.0, -5.0), (-5.0, -5.0), (-5.0, 0.0), (0.0, 0.0))s3.addcomponent(poly1, "green", "black")theScreen.register_shape("myshape3", s3)t.settiltangle(270)t.penup()t.ht()t.speed(10)moive.show()        #############################for j in range(10):            for k in range(10):                if (k + 1, j + 1) in lst:print('green:', lst)t.shape('myshape3')                else:                    if ((k + 1, j + 1) in lst2) or moive.isbook(k + 1, j + 1):t.shape('myshape2')                    else:t.shape('myshape1')x = j * 60y = -k * 45t.goto(x, y)t.stamp()        # theScreen.mainloop()canva = tk.Canvas(window1, relief=tk.FLAT)canva.pack(fill='both', expand='yes')drawp(canva, movie, )window1.mainloop()    # aa = tk.Button(window1, text="Draw", command= lambda: drawp())# aa.pack()def chushi_jiemian():global windowwindow.title('电影选座系统')window.geometry('1330x700')l = tk.Label(window, text='正在热映(8部)', fg='red', font=('楷书', 20), width=30, height=2)l.place(relx=0.37, rely=0.01)mainGui(r'你的世界如果没有我.jpg', 0.1, 0.1)mainGui(r'只要你过的比我好.jpg', 0.3, 0.1)mainGui(r'扬名立万.jpg', 0.5, 0.1)mainGui(r'梅艳芳.jpg', 0.7, 0.1)mainGui(r'笨鸟大冒险.jpg', 0.1, 0.5)mainGui(r'古董局中局.jpg', 0.3, 0.5)mainGui(r'长津湖.jpg', 0.5, 0.5)mainGui(r'门锁.jpg', 0.7, 0.5)b1 = tk.Button(window, text='点击购票', font=('楷书', 12), command=lambda: xuanpiao(1))b1.place(relx=0.165, y=350, height=20, relwidth=0.1)b2 = tk.Button(window, text='点击购票', font=('楷书', 12), command=lambda: xuanpiao(2))b2.place(relx=0.365, y=350, height=20, relwidth=0.1)b3 = tk.Button(window, text='点击购票', font=('楷书', 12), command=lambda: xuanpiao(3))b3.place(relx=0.565, y=350, height=20, relwidth=0.1)b4 = tk.Button(window, text='点击购票', font=('楷书', 12), command=lambda: xuanpiao(4))b4.place(relx=0.765, y=350, height=20, relwidth=0.1)b5 = tk.Button(window, text='点击购票', font=('楷书', 12), command=lambda: xuanpiao(5))b5.place(relx=0.165, y=635, height=20, relwidth=0.1)b6 = tk.Button(window, text='点击购票', font=('楷书', 12), command=lambda: xuanpiao(6))b6.place(relx=0.365, y=635, height=20, relwidth=0.1)b7 = tk.Button(window, text='点击购票', font=('楷书', 12), command=lambda: xuanpiao(7))b7.place(relx=0.565, y=635, height=20, relwidth=0.1)b8 = tk.Button(window, text='点击购票', font=('楷书', 12), command=lambda: xuanpiao(8))b8.place(relx=0.765, y=635, height=20, relwidth=0.1)window.mainloop()chushi_jiemian()

2)绘制turtle购票之后的电影院座位。

import turtle as tdef goto(x, y):    t.penup()    t.goto(x, y)    t.pendown()def seat(x, y,):    t.pensize(1)    t.color('black')    for i in range(10):        for j in range(10):            goto(-50 + i * 40, -50 + j * 40)            t.left(90)            t.fd(10)            t.right(90)            t.fd(20)            t.right(90)            t.fd(10)            t.right(90)            t.fd(5)            t.left(90)            t.fd(10)            t.right(90)            t.fd(10)            t.right(90)            t.fd(10)            t.left(90)            t.fd(5)            t.fd(5)            t.left(90)            t.fd(15)            t.left(90)            t.fd(30)            t.left(90)            t.fd(15)            t.left(90)            t.fd(10)            t.right(180)    goto(350, 450)    t.left(90)    t.fd(10)    t.right(90)    t.fd(20)    t.right(90)    t.fd(10)    t.right(90)    t.fd(5)    t.left(90)    t.fd(10)    t.right(90)    t.fd(10)    t.right(90)    t.fd(10)    t.left(90)    t.fd(5)    t.fd(5)    t.left(90)    t.fd(15)    t.left(90)    t.fd(30)    t.left(90)    t.fd(15)    t.left(90)    t.fd(10)    t.left(180)    t.pencolor('white')    goto(-50 + (x-1) * 40, -50 + (y-1) * 40)    t.left(90)    t.fd(10)    t.right(90)    t.fd(20)    t.right(90)    t.fd(10)    t.right(90)    t.fd(5)    t.left(90)    t.fd(10)    t.right(90)    t.fd(10)    t.right(90)    t.fd(10)    t.left(90)    t.fd(5)    t.fd(5)    t.left(90)    t.fd(15)    t.left(90)    t.fd(30)    t.left(90)    t.fd(15)    t.left(90)    t.fd(10)    t.left(180)    t.pencolor('black')    goto(-50 + (x-1) * 40, -50 + (y-1) * 40)    t.fillcolor('red')    t.begin_fill()    t.left(90)    t.fd(10)    t.right(90)    t.fd(20)    t.right(90)    t.fd(10)    t.right(90)    t.fd(5)    t.left(90)    t.fd(10)    t.right(90)    t.fd(10)    t.right(90)    t.fd(10)    t.left(90)    t.fd(5)    t.end_fill()    t.fillcolor('pink')    t.begin_fill()    t.fd(5)    t.left(90)    t.fd(15)    t.left(90)    t.fd(30)    t.left(90)    t.fd(15)    t.left(90)    t.fd(10)    t.left(90)    t.fd(10)    t.right(90)    t.fd(10)    t.right(90)    t.fd(10)    t.left(90)    t.fd(5)    t.end_fill()    t.left(180)t.ht()t.tracer(False)seat(2, 1)t.done()

这款电影院选票系统主要就分为这两大块内容。简单的界面购票选票的都完成啦!

三、效果展示

1)界面效果

2)点击“长津湖”选座界面

3)选座

4)购票成功

总结

好啦!到这里这款电影选座购票系统就写完啦!虽然只是一款简单的界面小程序,但是该有的效果还是都有滴啦!有大佬也可以自行优化!

-END-

Python订票系统这才是看电影选座的正确方法,原来我们都上当了相关推荐

  1. python订票系统_django火车预订系统(订票)

    我已经为火车做了一个django预订系统(订票),但一次只能预订1个人,现在我觉得这样做是不够的,我需要让用户能够选择他想要预订的车票(从1到9列),然后在选择行程后,能够在最后以相同的形式预订多张车 ...

  2. 基于Android的电影选座订票系统毕业设计源码011439

    摘 要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多商家的眼球之中,他们利用网络来做这个电影选座的网站,随之就产生了"电影选座订票系统",这样就让用户电影选座 ...

  3. 基于ssm的电影票订票系统/电影院管理系统/电影票务管理系统

    目 录 摘  要 ABSTRACT 第1章 绪论 1.1背景及意义 1.2 国内外研究概况 1.3 研究的内容 第2章 相关技术 2.1 JSP技术介绍 2.2 JAVA简介 2.3 MyEclips ...

  4. (附源码)app电影选座订票 毕业设计 011439

    摘  要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多商家的眼球之中,他们利用网络来做这个电影选座的网站,随之就产生了"电影选座订票系统",这样就让用户电影选 ...

  5. (附源码)电影选座订票app 毕业设计 011439

    摘  要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多商家的眼球之中,他们利用网络来做这个电影选座的网站,随之就产生了"电影选座订票系统",这样就让用户电影选 ...

  6. (附源码)springboot电影选座订票app 毕业设计 011439

    摘  要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多商家的眼球之中,他们利用网络来做这个电影选座的网站,随之就产生了"电影选座订票系统",这样就让用户电影选 ...

  7. 飞机订票系统 python实现(大二上数据结构课设)

    说明: 本博客是从课设报告中截取的重要部分.这个飞机订票系统是本人大二上的数据结构课设,功能相对完善,界面相对美观.图形界面,本来想用Qt5(python中一个图形界面的类库,风格偏向于win10)去 ...

  8. 可操作性强!Python实现一个电影订票系统!

    来源丨Python小二 一.效果展示 通过Python实现一个电影订票系统,效果如下所示: 二.整体结构图 三.代码分解 3.1 infos.py 一部电影的详细信息适合用 字典 结构来存储,我们可以 ...

  9. python 多线程同步_Python利用多线程同步锁实现多窗口订票系统(推荐)

    利用Python实现多窗口订票系统,利用 threading.Lock() 避免出现一票多卖,无票也卖的情况,并规范化输出情况. 代码: import threading import time ti ...

最新文章

  1. mysql中的EXPLAIN
  2. url主机域名可以省略_网站迁移虚拟主机怎么样能不影响网站优化
  3. 每日程序C语言27-矩阵对角线求和
  4. 将字符串中的大写字母变成小写字母
  5. 第四节:Task的启动的四种方式以及Task、TaskFactory的线程等待和线程延续的解决方案
  6. 机器学习部分内容总结
  7. zoj 2706 线段树
  8. PDF Expert 坚果云 强强联合 优惠来袭
  9. 运维 xshell 快捷键
  10. 免费获取谷歌翻译api(Google Translate API)
  11. 微信PC版的API接口
  12. x264-VBV(video buffering verifier)
  13. java 判断是不是昨天、今天、明天
  14. 20190803——python文件操作
  15. LCA;未结合小扁豆凝集素(LCA)
  16. 2016/7/4日-你若安好,便是晴天.
  17. 瞬态抑制二极管TVS的基本知识
  18. win10无法打开 巫师3 等steam游戏
  19. JAVA日期格式化常用格式对照表
  20. Linux进程是如何创建出来的?

热门文章

  1. 用另一种方式解决机房管理助手!(非结束进程版)
  2. Introduction to SPM statistics
  3. zz纯数学课程科目与教材推荐
  4. Java组各任务工作流程
  5. 从简历被拒到收割今日头条offer经验总结
  6. 常用商务邮箱:常用商务邮箱注册
  7. excel转word_PDF一键转Word、转Excel、转PPT、转Html、转图片软件
  8. 直流无刷电机及Matlab/Simulink驱动仿真
  9. 【设计权限系统】ACL, DAC, MAC, RBAC, ABAC模型的不同应用场景
  10. 笔试面试经历----上海爱立信