python之界面案例

news2024/11/26 6:20:34

目录

一、海龟绘图

二、图形化编程入门

 窗口创建

三、表格控件的简单认知

四、综合案例


一、海龟绘图

海龟绘图作用:提升界面美观度,吸引用户使用 

学习网址:

turtle --- 海龟绘图 — Python 3.8.14 文档

 


二、图形化编程入门

 窗口创建

首先导入tkinter包,然后创建一个窗口,最后给这个窗口设置标题。

from tkinter import   *

#拿到窗口对象
win= Tk()
# 设置窗体名
win.title('这一个窗体')


添加一个组件
# 文本标签label
l1=Label(win,text="请输入:")
l1.grid(column=0,row=0) #列行
# 输入框
txt=Entry(win,width=20)
txt.grid(column=1,row=0) #列行
# 按钮
# 点击事件
def ab():
    # l1.configure(text=txt.get())
  print(txt.get())


btn=Button(win,text="发送" ,command=ab)
btn.grid(column=2,row=0) #列行

# 设置窗体大小
win.geometry("400x400")



win.mainloop() #展示


三、表格控件的简单认知

# 导入界面模块增删改查
from tkinter import *
# 导入表格模具哎
from tkinter.ttk import Treeview

# 导入弹框
from tkinter.simpledialog import *
# 导入提示框
from tkinter.messagebox import *



# 新建界面
window = Tk()
# 调整页面的大小 widthxheight+x+y
window.geometry('500x500')

# 新建一个表格
table = Treeview(columns=('bid', 'bname', 'price'),
                 show="headings")
table.column('bid', width=100)
table.column('bname', width=100)
table.column('price', width=100)
table.heading('bid', text='书本编号')
table.heading('bname', text='书本名字')
table.heading('price', text='书本价格')

books=((1,"斗破苍穹",123),(2,"武动乾坤",134),(3,"元尊",345),(4,"大主宰",678),(5,"万相之王",378))
def load():
    # 清除表格的数据 ---防止数据累加
    for i in table.get_children():
        table.delete(i)
    # 先读出数据库的数据
    for i in books:
        # 将数据加入到表格中
        table.insert('', END, value=i)


def add():
    name = askstring('提示', '请输入书本名称') #提示框
    price = askfloat('提示', '请输入书本价格')
    print(name)
    print(price)
    if name is not None and price is not None:
        r = '新增成功'
        messagebox.showinfo(r)
        pass


def delete():
    ids = []
    # 制作多选删除
    for i in table.selection():
        # i是元素的id
        # item 根据id拿对应的数据
        ids.append(table.item(i)['values'][0])
    if len(table.selection()) == 0:
        bid = askinteger('提示', '请输入书本编号')
        ids.append(bid)
    for i in ids:
        pass



Button(text='加载', command=load).place(x=100, y=350)
Button(text='增加', command=add).place(x=200, y=350)
Button(text='删除', command=delete).place(x=300, y=350)

# 让表格显示
table.place(width=500, height=300)
# 让界面显示
window.mainloop()


四、综合案例

 

from pymysql import *

from python01.test02 import val


class DBHelper:
    con = None
    cur = None

    def __init__(self):
        self.con = connect(user="root",
                           password="123456",
                           host="localhost",
                           database="db_0701")
        self.cur = self.con.cursor()

    def executeQuery(self, sql: str, val: tuple=None):
        try:
            self.cur.execute(sql, val)
            return self.cur.fetchall()
        except Exception as e:
            print(e)
        finally:
            self.close()



    def execUpdate(self, sql: str,val: tuple=None):
        try:
            self.cur.execute(sql, val)
        except Exception as e:
            print(e)
            self.con.rollback()
            return "操作失败"
        else:
            self.con.commit()
            return "操作成功"
        finally:
            self.close()



    def batchUpdate(self, sqls: set):
        try:
            for sql in sqls:
                self.cur.execute(sql)
        except Exception as e:
            print(e)
            self.con.rollback()
            return "操作失败"
        else:
            self.con.commit()
            return "操作成功"
        finally:
            self.close()

    def close(self):
        self.cur.close()
        self.con.close()

 

# 导入界面模块
from tkinter import *
# 导入表格模具
from tkinter.ttk import Treeview
# 导入弹框
from tkinter.simpledialog import *
# 导入提示框
from tkinter.messagebox import *
# 导入MySQL的DBHelper
from  python06 import *
from python06.mysql  import *

# 新建界面
window = Tk()
# 调整页面的大小 widthxheight+x+y
window.geometry('500x500')

# 新建一个表格
table = Treeview(columns=('bid', 'bname', 'price'),
                 show="headings")
table.column('bid', width=100)
table.column('bname', width=100)
table.column('price', width=100)
table.heading('bid', text='书本编号')
table.heading('bname', text='书本名字')
table.heading('price', text='书本价格')

# dbHelper =DBHelper()


def load():
    # 清除表格的数据
    for i in table.get_children():
        table.delete(i)
    # 先读出数据库的数据
    for i in DBHelper().executeQuery("select * from t_mvc_book limit 0,100"):
        # 将数据加入到表格中
        table.insert('', END, value=i)


def add():
    name = askstring('提示', '请输入书本名称')
    price = askfloat('提示', '请输入书本价格')
    print(name)
    print(price)
    if name is not None and price is not None:
        r = DBHelper().execUpdate("insert into t_mvc_book(bname,price) value(%s,%s) ", (name, price))
        messagebox.showinfo(r)


def delete():
    ids = []
    # 制作多选删除
    for i in table.selection():
        # i是元素的id
        # item 根据id拿对应的数据
        ids.append(table.item(i)['values'][0])
    if len(table.selection()) == 0:
        bid = askinteger('提示', '请输入书本编号')
        ids.append(bid)
    for i in ids:
        DBHelper().execUpdate("delete from t_mvc_book where bid = %s ", (i))


# 下单,测试一下事务控制
def createOrder():
    sqls = {"""insert into py_student values(9,'小白','男','2022-11-30 11:38:14')"""
        ,"""update py_student set name='小黄dog' where id = 8"""}
    DBHelper().batchUpdate(sqls)


Button(text='加载', command=load).place(x=100, y=350)
Button(text='增加', command=add).place(x=200, y=350)
Button(text='删除', command=delete).place(x=300, y=350)
Button(text='事务', command=createOrder).place(x=400, y=350)

# 让表格显示
table.place(width=500, height=300)
# 让界面显示
window.mainloop()

 测试事务功能:

 测试删除功能:

 

 

 删除成功-->选中删除行-->删除后重新加载

批量删除

 

 增加操作时遇到的

问题1:

 解决如:DBHelper()

直接调用辅助类DBHelper()

问题1:

bid未设置自动递增!

 

 问题已经解决

测试:


 

 增加成功

 


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构与算法】跳表

目录 一、什么是跳表 二、跳表的效率验证 三、跳表的实现 1、search 2、add 3、erase 四、跳表与其它搜索结构对比 总结 一、什么是跳表 跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树,AVL树不相上下&am…

【高精度定位】RTK定位与RTD定位知识科普

高精度定位一般指亚米级别或厘米级别的定位,常见的室内有蓝牙AoA和UWB两种技术,室外有北斗地基增强技术,这些技术都是采用算法进行定位。 工业4.0时代,在资源和环境约束不断强化的背景下,创新驱动传统制造向智能制造转…

【MAUI】条形码,二维码扫描功能

前言 本系列文章面向移动开发小白,从零开始进行平台相关功能开发,演示如何参考平台的官方文档使用MAUI技术来开发相应功能。 介绍 移动端的扫描条形码、二维码的功能已经随处可见,已经很难找到一个不支持扫描的App了,但是微软的…

sync fsync fdatasync 三者的区别

传统的UNIX系统实现在内核中设有缓冲区高速缓存或页高速缓存,大多数磁盘I/O都通过缓区进行。当我们向文件写入数据时,内核通常先将数据复制到缓冲区中,然后排入队列,晚些时候再入磁盘。这种方式被称为延迟写 (delayed wrie)(Bach[…

最惨面试季:“这么简单的9道题,我刷掉了90%的测试员。”

人往高处走水往低处流,十二月将至,“金三银四”招聘季还会远吗? 远观2022年的招聘季,在资本寒冬的映照下,的确萧条了不少,裁员、取消年终奖、末尾淘汰制等热门制度,让很多人陷入了“工作难保&a…

【自然语言处理】隐马尔科夫模型【Ⅴ】解码问题

有任何的书写错误、排版错误、概念错误等,希望大家包含指正。 由于字数限制,分成六篇博客。 【自然语言处理】隐马尔可夫模型【Ⅰ】马尔可夫模型 【自然语言处理】隐马尔科夫模型【Ⅱ】隐马尔科夫模型概述 【自然语言处理】隐马尔科夫模型【Ⅲ】估计问题…

基于安卓的校园订餐系统开发设计

目 录 Abstract 6 1 绪 论 1 1.1 研究背景 1 1.2 研究意义 1 1.3 国内外研究现状 1 1.4 研究的过程和结果 2 1.5 论文主要组织结构 3 2 设计原理和方法 4 2.2 关键技术简介 4 2.3 开发工具 5 2.4 应用平台 6 3 需求分析 8 3.1 功能性需求 8 3.2 非功能需求 17 4 系统概要设计 1…

JS文件操作介绍

JS文件操作介绍 本文将介绍前端浏览器支持的JS文件操作技术。相关权威技术资料 带有 type"file" 的 <input> 元素允许用户可以从他们的设备中选择一个或多个文件。<input type"file"> - HTML&#xff08;超文本标记语言&#xff09; | MDN …

HDFS的API操作

目录 依赖环境 AIP操作hdfs基本流程 创建目录 文件上传 参数优先级 文件下载 文件删除 文件更名与移动 查看HDFS文件的详情信息 文件和文件夹的判断 依赖环境 hadoop依赖&#xff1a; Maven Repository&#xff08;Maven仓库&#xff09;- https://mvnrepository.com/…

中小型企业 CRM 系统有哪些好的推荐?

不同行业的中小型企业在资源、需求、抗风险能力、业务成熟度等方面存在显著差异&#xff0c;因此对CRM的应用需求有不同侧重。 图源&#xff1a;艾瑞咨询我专门研究了一些CRM的行业报告&#xff0c;比较了一下当下几款比较热门的CRM&#xff0c;希望能够帮助大家找到自己的“心…

【能效管理】AcrelEMS-IDC数据中心综合能效管理系统应用分析

概述 安科瑞电气紧跟数据中心发展形式&#xff0c;推出AcrelEMS-IDC数据中心综合能效管理解决方案&#xff0c;包含有电力监控、动环监控、消防监控、能耗统计分析、智能照明控制以及新能源监测几个子系统。集成了变配电监测、电源备自投、电气接点测温、智能照明控制、电能质…

PD芯片在OTG设备的角色应用及OTG发展历史

OTG是On-The-Go的缩写&#xff0c;是近年发展起来的技术。2001年12月18日由USB标准化组织公布&#xff0c;主要应用于不同的设备或移动设备间的联接&#xff0c;进行数据交换。 USB技术的发展&#xff0c;使得PC和周边设备能够通过简单的方式、适度的制造成本&#xff0c;将各…

渗透测试sec123笔记

1.外网打点 1.1端口探测 └─$ sudo masscan 192.168.1.103 -p 1-65535 --rate100 masscan扫描结果 └─$ nmap -sV 192.168.1.103 -sC -p 8088,5985,49154,49173,80,8878,47001,7000,49153,49157,3389,49155,49152,8899,49161 -oN sec-ports …

开发转测试:从零开始的6年自动化之路,太迷茫...

自动化初识 作为一个测试人&#xff0c;我们或多或少都听过或用过自动化&#xff0c;我们都曾在初入测试行业时&#xff0c;满怀期待的以为测试的尽头是不用测试员点点了&#xff0c;项目一提测&#xff0c;小手点下自动化的开关&#xff0c;瞬间测试的工作就完成了。 这就是…

4-Arm PEG-Biotin,4-Arm peg-Biotin,四臂-聚乙二醇-生物素科研试剂供应

一&#xff1a;产品描述 1、名称 英文&#xff1a;4-Arm PEG-Biotin&#xff0c;4-Arm peg-Biotin 中文&#xff1a;四臂-聚乙二醇-生物素 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Biotin PEG Multi-arm PEGs 4、分子量&#xff1a;可定制&#xff0c;四臂-PE…

BundleTrack自用配置笔记

0、下载代码 git clone https://github.com/wenbowen123/BundleTrack.git 或者选择Download ZIP 1、按照Ubuntu版本安装docker 查看docker版本 $ docker version 在1080显卡上测试时出现bug&#xff0c;找到一个解决的文章&#xff0c;本人适用 docker: Error response…

微信小程序模板与配置

文章目录1. 数据绑定2. 事件绑定3. 事件传参4. 网络请求1. 数据绑定 在data中定义数据&#xff1a;在页面对应的js文件中&#xff0c;把数据定义到data对象中即可 // index.js Page({// string 类型info:init data,// 数组 类型msgList:[{msg:hello},{msg:world}] })在WXML中使…

测试人员面试需要掌握的内容,软件测试面试题答案

1、在公司的测试流程是什么&#xff1f; 产品经理确认本次版本的需求&#xff0c;召开需求评审会&#xff0c;进行估时排期&#xff0c;需求和时间都确定之后&#xff0c;UI出设计图&#xff0c;开发人员进行开发&#xff0c;测试人员编写测试用例&#xff0c;召开用例评审会议…

12.13

AJAX 视频 1-11 1.1 AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff0c;就是异步的 JS 和 XML。 通过 AJAX 可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无刷新获取数据。 AJAX 不是新的编程语言&#xff0c;而是一种将现有…

909. 蛇梯棋-广度优先遍历

909. 蛇梯棋-广度优先遍历 给你一个大小为 n x n 的整数矩阵 board &#xff0c;方格按从 1 到 n2 编号&#xff0c;编号遵循 转行交替方式 &#xff0c;从左下角开始 &#xff08;即&#xff0c;从 board[n - 1][0] 开始&#xff09;每一行交替方向。 玩家从棋盘上的方格 1 …