python基于Tkinter实现人员管理系统

前言

Tkinter是python内置的标准GUI库,基于Tkinter实现了简易人员管理系统,所用数据库为Mongodb

代码

时间宝贵!直接上代码!

from tkinter import *
from tkinter.messagebox import *
from tkinter import ttk
import pymongo
import tkinter as tk
import re
import time
import datetime

import pandas as pd
from tkinter import filedialog
from PIL import ImageTk,Image
import tkinter

#连接数据库
client = pymongo.MongoClient(host="localhost", port=27017)
db = client.sys
col = db.user
#创建窗口
root = Tk()
root.geometry('900x700')
root.title('人员管理系统')
#表头
img =Image.open(r'C:\Users\apple\Desktop\image.jpg')
img = img.resize((900,68),Image.ANTIALIAS)
img = ImageTk.PhotoImage(img)
top=Label(root, text='人员管理系统',image=img,fg='black',font=('楷体', 20),compound='center', bitmap='error')
top.pack(ipady=0,side=TOP, fill='x')
#变量
sid = StringVar()
name = StringVar()
age = StringVar()
salary = StringVar()
phone = StringVar()
birthday = StringVar()

#控制函数

def add():
    global info
    info=Toplevel()
    info.title("添加信息")
    info.geometry('400x400')
    button1=Button(info, text="确认",command=appendInfo,font=("黑体", 12)).place(relx=0.4, rely=0.8, width=100)
    Label(info, text="工号:").place(relx=0.2, rely=0.1, relwidth=0.1)
    Label(info, text="姓名:").place(relx=0.2, rely=0.2, relwidth=0.1)
    Label(info, text="年龄:").place(relx=0.2, rely=0.3, relwidth=0.1)
    Label(info, text="薪资:").place(relx=0.2, rely=0.4, relwidth=0.1)
    Label(info, text="电话:").place(relx=0.2, rely=0.5, relwidth=0.1)
    Label(info, text="生日:").place(relx=0.2, rely=0.6, relwidth=0.1)
    text1=Entry(info, textvariable=sid).place(relx=0.3, rely=0.1, relwidth=0.45, height=25)
    sid.set("")
    text2=Entry(info, textvariable=name).place(relx=0.3, rely=0.2, relwidth=0.45, height=25)
    name.set("")
    text3=Entry(info, textvariable=age).place(relx=0.3, rely=0.3, relwidth=0.45, height=25)
    age.set("")
    text4=Entry(info, textvariable=salary).place(relx=0.3, rely=0.4, relwidth=0.45, height=25)
    salary.set("")
    text5=Entry(info, textvariable=phone).place(relx=0.3, rely=0.5, relwidth=0.45, height=25)
    phone.set("")
    text6=Entry(info, textvariable=birthday).place(relx=0.3, rely=0.6, relwidth=0.45, height=25)
    birthday.set("")
    info.bind('<Return>',pas8)
#     info.bind_all('<KeyPress-Up>',movetriangle)
#     info.bind_all('<KeyPress-Down>',movetriangle)
#     info.bind_all('<KeyPress-Left>',movetriangle)
#     .bind_all('<KeyPress-Right>',movetriangle)

def pitch_on():
    global info
    info=Toplevel()
    info.title("删除信息")
    info.geometry('400x400')
    Label(info, text="是否确定删除以下信息",font=('楷体', 15)).place(relx=0.2, rely=0.01, relwidth=0.6)
    Label(info, text="工号:").place(relx=0.2, rely=0.1, relwidth=0.1)
    Label(info, text="姓名:").place(relx=0.2, rely=0.2, relwidth=0.1)
    Label(info, text="年龄:").place(relx=0.2, rely=0.3, relwidth=0.1)
    Label(info, text="薪资:").place(relx=0.2, rely=0.4, relwidth=0.1)
    Label(info, text="电话:").place(relx=0.2, rely=0.5, relwidth=0.1)
    Label(info, text="生日:").place(relx=0.2, rely=0.6, relwidth=0.1)
    text1=Entry(info, textvariable=sid,state='disable').place(relx=0.3, rely=0.1, relwidth=0.45, height=25)
    sid.set(sf[0])
    text2=Entry(info, textvariable=name,state='disable').place(relx=0.3, rely=0.2, relwidth=0.45, height=25)
    name.set(sf[1])
    text3=Entry(info, textvariable=age,state='disable').place(relx=0.3, rely=0.3, relwidth=0.45, height=25)
    age.set(sf[2])
    text4=Entry(info, textvariable=salary,state='disable').place(relx=0.3, rely=0.4, relwidth=0.45, height=25)
    salary.set(sf[3])
    text5=Entry(info, textvariable=phone,state='disable').place(relx=0.3, rely=0.5, relwidth=0.45, height=25)
    phone.set(sf[4])
    text6=Entry(info, textvariable=birthday,state='disable').place(relx=0.3, rely=0.6, relwidth=0.45, height=25)
    birthday.set(sf[5])
    button1=Button(info, text="确认",command=deleteInfo).place(relx=0.2, rely=0.8, width=100)
    button2=Button(info, text="关闭",command=des).place(relx=0.6, rely=0.8, width=100)
    info.bind('<Return>',pas33)

def information2():
    global info
    info=Toplevel()
    info.title("详细信息")
    info.geometry('400x400')
    button1=Button(info, text="更新信息",command=updateInfo).place(relx=0.4, rely=0.8, width=100)
    Label(info, text="工号:").place(relx=0.2, rely=0.1, relwidth=0.1)
    Label(info, text="姓名:").place(relx=0.2, rely=0.2, relwidth=0.1)
    Label(info, text="年龄:").place(relx=0.2, rely=0.3, relwidth=0.1)
    Label(info, text="薪资:").place(relx=0.2, rely=0.4, relwidth=0.1)
    Label(info, text="电话:").place(relx=0.2, rely=0.5, relwidth=0.1)
    Label(info, text="生日:").place(relx=0.2, rely=0.6, relwidth=0.1)
    text1=Entry(info, textvariable=sid,state='disable').place(relx=0.3, rely=0.1, relwidth=0.45, height=25)
    sid.set(sf[0])
    text2=Entry(info, textvariable=name).place(relx=0.3, rely=0.2, relwidth=0.45, height=25)
    name.set(sf[1])
    text3=Entry(info, textvariable=age).place(relx=0.3, rely=0.3, relwidth=0.45, height=25)
    age.set(sf[2])
    text4=Entry(info, textvariable=salary).place(relx=0.3, rely=0.4, relwidth=0.45, height=25)
    salary.set(sf[3])
    text5=Entry(info, textvariable=phone).place(relx=0.3, rely=0.5, relwidth=0.45, height=25)
    phone.set(sf[4])
    text6=Entry(info, textvariable=birthday).place(relx=0.3, rely=0.6, relwidth=0.45, height=25)
    birthday.set(sf[5])
    info.bind('<Return>',pas11)

def des():
    info.destroy()

def information(event):
    item=dataTreeview.selection()
    itemvalues=dataTreeview.item(item,'values')
    global info
    info=Toplevel()
    info.title("详细信息")
    info.geometry('400x400')
    button1=Button(info, text="更新信息",command=updateInfo).place(relx=0.4, rely=0.8, width=100)

    Label(info, text="工号:").place(relx=0.2, rely=0.1, relwidth=0.1)
    Label(info, text="姓名:").place(relx=0.2, rely=0.2, relwidth=0.1)
    Label(info, text="年龄:").place(relx=0.2, rely=0.3, relwidth=0.1)
    Label(info, text="薪资:").place(relx=0.2, rely=0.4, relwidth=0.1)
    Label(info, text="电话:").place(relx=0.2, rely=0.5, relwidth=0.1)
    Label(info, text="生日:").place(relx=0.2, rely=0.6, relwidth=0.1)
    text1=Entry(info, textvariable=sid,state='disable').place(relx=0.3, rely=0.1, relwidth=0.45, height=25)
    sid.set(itemvalues[0])
    text2=Entry(info, textvariable=name).place(relx=0.3, rely=0.2, relwidth=0.45, height=25)
    name.set(itemvalues[1])
    text3=Entry(info, textvariable=age).place(relx=0.3, rely=0.3, relwidth=0.45, height=25)
    age.set(itemvalues[2])
    text4=Entry(info, textvariable=salary).place(relx=0.3, rely=0.4, relwidth=0.45, height=25)
    salary.set(itemvalues[3])
    text5=Entry(info, textvariable=phone).place(relx=0.3, rely=0.5, relwidth=0.45, height=25)
    phone.set(itemvalues[4])
    text6=Entry(info, textvariable=birthday).place(relx=0.3, rely=0.6, relwidth=0.45, height=25)
    birthday.set(itemvalues[5])

def isVaildDate(date):
        try:
            time.strptime(date, "%Y-%m-%d")
            return True
        except:
            return False 

def showAllInfo():
    x = dataTreeview.get_children()
    for item in x:
        dataTreeview.delete(item)
    lst=col.find({},{'_id':0})
    for item in lst:
        i=list(item.values())
        dataTreeview.insert("", 1, text="line1", values=i)
def pas1(self):
    showAllInfo()

def pas2(self):
    add()

def pas3(self):
    pitch_on()

def pas33(self):
    deleteInfo()

def pas4(self):
    information2()

def pas5(self):
    searchInfo()

def pas55(self):
    search()

def pas6(self):
    impInfo()

def pas7(self):
    exp()

def pas8(self):
    appendInfo()

def pas9(self):
    global sf
    sf=dataTreeview.selection()
    sf=dataTreeview.item(sf,'values')

def pas10(self):
    expInfo()

def pas11(self):
    updateInfo()

def appendInfo():
    flag=1
    if sid.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0
    if sid.get().isdigit() == False:
        showerror(title='提示', message='格式错误')
        sid.set("")
        flag=0

    if name.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0

    if age.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0
    if age.get().isdigit() == False:
        showerror(title='提示', message='格式错误')
        age.set("")
        flag=0

    if salary.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0
    if salary.get().isdigit() == False:
        showerror(title='提示', message='格式错误')
        salary.set("")
        flag=0

    if phone.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0
    if phone.get().isdigit() == False:
        showerror(title='提示', message='格式错误')
        phone.set("")
        flag=0

    if birthday.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0
    if isVaildDate(str(birthday.get())) == False:
        showerror(title='提示', message='格式错误')
        birthday.set("")
        flag=0
    if flag==1:
        x = dataTreeview.get_children()
        for item in x:
            dataTreeview.delete(item)
        list1 = {
                "work_number":sid.get(),
                "name":name.get(),
                "age":age.get(),
                "salary":salary.get(),
                "phone":phone.get(),
                "birthday":birthday.get()
            }
        col.insert_one(list1)
        lst=col.find({},{'_id':0})
        for item in lst:
            i=list(item.values())
            dataTreeview.insert("", 1, text="line1", values=i)
        info.destroy()

def deleteInfo():
    lst=list(col.find({},{'_id':0}))
    num = sid.get()
    flag = 0
    for i in range(len(lst)):
        if str(num)==str(lst[i].get("work_number")):
            flag = 1
            col.delete_one({'work_number':num})
            break

    x = dataTreeview.get_children()
    for item in x:
        dataTreeview.delete(item)

    lst=col.find({},{'_id':0})
    for item in lst:
        i=list(item.values())
        dataTreeview.insert("", 1, text="line1", values=i)
    info.destroy()

#更新操作
def updateInfo():
    sid_1 = sid.get()
    name_1 = name.get()
    age_1 = age.get()
    salary_1 = salary.get()
    phone_1 = phone.get()
    birthday_1 = birthday.get()
    flag=1
    if sid.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0
    if sid.get().isdigit() == False:
        showerror(title='提示', message='格式错误')
        sid.set("")
        flag=0

    if name.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0

    if age.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0
    if age.get().isdigit() == False:
        showerror(title='提示', message='格式错误')
        age.set("")
        flag=0

    if salary.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0
    if salary.get().isdigit() == False:
        showerror(title='提示', message='格式错误')
        salary.set("")
        flag=0

    if phone.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0
    if phone.get().isdigit() == False:
        showerror(title='提示', message='格式错误')
        phone.set("")
        flag=0

    if birthday.get() == "":
        showerror(title='提示', message='输入不能为空')
        flag=0
    if isVaildDate(str(birthday.get())) == False:
        showerror(title='提示', message='格式错误')
        birthday.set("")
        flag=0
    if flag==1:
        up={
            "work_number":sid_1,
            "name":name_1,
            "age":age_1,
            "salary":salary_1,
            "phone":phone_1,
            "birthday":birthday_1
        }

        old=col.find_one({'work_number': sid_1},{"_id": 0})
        col.update_one(old, {'$set':up})
        x = dataTreeview.get_children()
        for item in x:
            dataTreeview.delete(item)
        lst=col.find({},{'_id':0})
        for item in lst:
            i=list(item.values())
            dataTreeview.insert("", 1, text="line1", values=i)
        showinfo(title='提示', message='更新成功!')
        des()

#搜索页面
def search():
    global info
    info=Toplevel()
    info.title("搜索信息")
    info.geometry('400x400')
    button1=Button(info, text="确认搜索",command=searchInfo).place(relx=0.4, rely=0.8, width=100)
    Label(info, text="工号:").place(relx=0.2, rely=0.1, relwidth=0.1)
    Label(info, text="姓名:").place(relx=0.2, rely=0.2, relwidth=0.1)
    Label(info, text="年龄:").place(relx=0.2, rely=0.3, relwidth=0.1)
    Label(info, text="薪资:").place(relx=0.2, rely=0.4, relwidth=0.1)
    Label(info, text="电话:").place(relx=0.2, rely=0.5, relwidth=0.1)
    Label(info, text="生日:").place(relx=0.2, rely=0.6, relwidth=0.1)
    text1=Entry(info, textvariable=sid).place(relx=0.3, rely=0.1, relwidth=0.45, height=25)
    sid.set("")
    text2=Entry(info, textvariable=name).place(relx=0.3, rely=0.2, relwidth=0.45, height=25)
    name.set("")
    text3=Entry(info, textvariable=age).place(relx=0.3, rely=0.3, relwidth=0.45, height=25)
    age.set("")
    text4=Entry(info, textvariable=salary).place(relx=0.3, rely=0.4, relwidth=0.45, height=25)
    salary.set("")
    text5=Entry(info, textvariable=phone).place(relx=0.3, rely=0.5, relwidth=0.45, height=25)
    phone.set("")
    text6=Entry(info, textvariable=birthday).place(relx=0.3, rely=0.6, relwidth=0.45, height=25)
    birthday.set("")
    info.bind('<Return>',pas5)
#搜索操作
def searchInfo():
    lst=list(col.find({},{'_id':0}))
    sid_1 = sid.get()
    name_1 = name.get()
    age_1 = age.get()
    salary_1 = salary.get()
    phone_1 = phone.get()
    birthday_1 = birthday.get()
    flag=1
#     if sid.get().isdigit() == False:
# #         showerror(title='提示', message='格式错误')
#         sid.set("")
#         flag=0
#     if age.get().isdigit() == False:
# #         showerror(title='提示', message='格式错误')
#         age.set("")
#         flag=0
#     if salary.get().isdigit() == False:
# #         showerror(title='提示', message='格式错误')
#         salary.set("")
#         flag=0

#     if phone.get().isdigit() == False:
# #         showerror(title='提示', message='格式错误')
#         phone.set("")
#         flag=0
#     if isVaildDate(str(birthday.get())) == False:
# #         showerror(title='提示', message='格式错误')
#         birthday.set("")
#         flag=0
#     if flag==0:
#         showerror(title='提示', message='格式错误')
    if flag==1:
        fla = 0
        v=[]
        for i in range(len(lst)):
            if sid_1==str(lst[i].get("work_number")):
                fla = 1
                v.append(lst[i].values())
                continue
            elif name_1==lst[i].get("name"):
                fla = 1
                v.append(lst[i].values())
                continue
            elif age_1==lst[i].get("age"):
                fla = 1
                v.append(lst[i].values())
                continue
            elif salary_1==lst[i].get("salary"):
                fla= 1
                v.append(lst[i].values())
                continue
            elif phone_1==lst[i].get("phone"):
                fla = 1
                v.append(lst[i].values())
                continue
            elif birthday_1==lst[i].get("birthday"):
                fla= 1
                v.append(lst[i].values())
                continue
        if fla == 0:
            showerror(title='提示', message='无此信息,搜索失败!')
        x = dataTreeview.get_children()
        for item in x:
            dataTreeview.delete(item)
        for i in v:
            dataTreeview.insert("", 1, text="line1", values=list(i))
        des()

def impInfo():
    root1 = Tk()
    root1.withdraw()
    Folderpath = filedialog.askdirectory() #获得选择好的文件夹
    Filepath = filedialog.askopenfilename() #获得选择好的文件
    data=pd.read_csv(Filepath)

    for i in range(len(data.values)):
        j=list(data.values[i])
        lst=col.find({},{'_id':0})
        flag=0
        for item in lst:
            i=list(item.values())
            if str(j[0])== str(i[0]):
                flag=1
                break
        if flag==0:
            list1 = {
                    "work_number":str(j[0]),
                    "name":j[1],
                    "age":j[2],
                    "salary":j[3],
                    "phone":j[4],
                    "birthday":j[5]
                }
            col.insert_one(list1)
    showinfo(title='提示', message='导入成功,可刷新!')

    x = dataTreeview.get_children()
    for item in x:
        dataTreeview.delete(item)
    lst=col.find({},{'_id':0})
    for item in lst:
        i=list(item.values())
        dataTreeview.insert("", 1, text="line1", values=i)

def xFunc(event):
    a=xVariable.get()  

def exp():
    global info
    info=Toplevel()
    info.title("保存信息")
    info.geometry('500x200')
    button1=Button(info, text="确认备份",command=expInfo).place(relx=0.4, rely=0.8, width=100)
    Label(info, text="路径:",font=("黑体", 10)).place(relx=0.05, rely=0.2, relwidth=0.2)
    button2=Button(info, text="选择本地",command=selection).place(relx=0.8, rely=0.2, width=70)
    Label(info, text="文件名:",font=("黑体", 10)).place(relx=0.05, rely=0.4, relwidth=0.2)
    com = ttk.Combobox(info, textvariable=xVariable)
    com.place(relx=0.8, rely=0.4, width=70)
    com["value"] = (".csv", ".html", ".xlsx",".xls")    # #给下拉菜单设定值
    com.current(2)
    com.bind("<<ComboboxSelected>>", xFunc)     # #给下拉菜单绑定事件
    text1=Entry(info, textvariable=path).place(relx=0.25, rely=0.2, relwidth=0.5, height=25)
    text2=Entry(info, textvariable=file_name).place(relx=0.25, rely=0.4, relwidth=0.5, height=25)
    info.bind('<Return>',pas10)

def selection():
    root2 = Tk()
    root2.withdraw()
    Folderpath = filedialog.askdirectory() #获得选择好的文件夹
    path.set(str(Folderpath))

def expInfo():
    lst=col.find({},{'_id':0})
    df =  pd.DataFrame(list(lst))
    ftp=xVariable.get()
    file = path.get()+'/'+file_name.get()+xVariable.get()
    print(file)
    if ftp=='.csv':
        df.to_csv(file,index=False,header=True)
    elif ftp=='.xlsx':
        df.to_excel(file,index=False,header=True)
    elif ftp=='.xls':
        df.to_excel(file,index=False,header=True)
    elif ftp=='.html':
        df.to_html(file,index=False,header=True)
    showinfo(title='提示', message='备份成功!')
    des()

path = StringVar()
file_name = StringVar()
xVariable = tkinter.StringVar()
#页面布局
Button(root, text="刷新信息",command=showAllInfo,font=("黑体", 12),relief="raised", bd=7).place(relx=0.03, rely=0.15, width=120,height=50)
root.bind('<F3>',pas1)
Button(root, text="添加信息",command=add,font=("黑体", 12),relief="raised", bd=7).place(relx=0.03, rely=0.25, width=120,height=50)
root.bind('<F4>',pas2)
Button(root, text="删除信息",command=pitch_on,font=("黑体", 12),relief="raised", bd=7).place(relx=0.03, rely=0.35, width=120,height=50)
root.bind('<BackSpace>',pas3)
Button(root, text="更新信息",command=information2,font=("黑体", 12),relief="raised", bd=7).place(relx=0.03, rely=0.45, width=120,height=50)
root.bind('<Control-A>',pas4)
Button(root, text="搜索信息",command=search,font=("黑体", 12),relief="raised", bd=7).place(relx=0.03, rely=0.55, width=120,height=50)
root.bind('<Control-S>',pas55)
Button(root, text="导入数据",command=impInfo,font=("黑体", 12),relief="raised", bd=7).place(relx=0.03, rely=0.65, width=120,height=50)
root.bind('<Control-D>',pas6)
Button(root, text="导出数据",command=exp,font=("黑体", 12),relief="raised", bd=7).place(relx=0.03, rely=0.75, width=120,height=50)
root.bind('<Control-W>',pas7)

dataTreeview = ttk.Treeview(root, show='headings',height=20, column=('sid', 'name', 'age','salary','phone','birthday'))
dataTreeview.column('sid', width=10, anchor="center")
dataTreeview.column('name', width=10, anchor="center")
dataTreeview.column('age', width=10, anchor="center")
dataTreeview.column('salary', width=10, anchor="center")
dataTreeview.column('phone', width=10, anchor="center")
dataTreeview.column('birthday', width=10, anchor="center")
style_value = ttk.Style()
style_value.configure("dataTreeview", rowheight=20, font=("微软雅黑", 30))
dataTreeview.tag_configure('tag_odd',background="red",foreground="blue")
dataTreeview.tag_configure('tag_even',background="black",foreground="orange")
scrollBar=Scrollbar(width=20)
scrollBar.pack(side=RIGHT,fill=Y)
scrollBar.config(command=dataTreeview.yview)

dataTreeview.heading('sid', text='工号')
dataTreeview.heading('name', text='姓名')
dataTreeview.heading('age', text='年龄')
dataTreeview.heading('salary', text='薪水')
dataTreeview.heading('phone', text='电话')
dataTreeview.heading('birthday', text='生日')
dataTreeview.bind('<Double-Button-1>',information)
dataTreeview.bind('<ButtonRelease-1>',pas9)
x = dataTreeview.get_children()
for item in x:
    dataTreeview.delete(item)
lst=col.find({},{'_id':0})
for item in lst:
    i=list(item.values())
    dataTreeview.insert("", 1, text="line1", values=i)
dataTreeview.place(relx=0.2,rely=0.1, relwidth=0.78,relheight=20)

root.mainloop() 

效果展示

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • python3+django2开发一个简单的人员管理系统过程详解

    一.基础环境准备 windows环境: Pycharm python3.6 Django2.0.1 Mysql5.7 安装django 在pycharm terminal 控制台执行: python3 -m pip install django #因为本地安装了python2.7 和python3.6 2个版本,所以python3.6环境变量对应python3 二.创建工程和应用 django-admin.py startproject qiakrcmdb #工程名称 cd qiakrcmdb

  • python实现大学人员管理系统

    python作为一个面对对象的程序设计语言,实现一个人员管理系统有自己关于类的方法. 首先,通过定义一个人员的类对象,实现对于人员公共特性的支持,公共的特性包括:姓名,性别,出生日期等,用一个Person类来表示.大学里总的来说分为两种身份的人:学生(Student)和职工(Staff),这两种有自己的特性,比如学生信息就有学号,课程,成绩等:职工有职工号,职位,薪水等. 利用python类对象的继承机制我们就可以很方便的表示这两种身份的人. 我们首先定义一个Person类,这个类用于保存共有的

  • python基于Tkinter实现人员管理系统

    前言 Tkinter是python内置的标准GUI库,基于Tkinter实现了简易人员管理系统,所用数据库为Mongodb 代码 时间宝贵!直接上代码! from tkinter import * from tkinter.messagebox import * from tkinter import ttk import pymongo import tkinter as tk import re import time import datetime import pandas as pd

  • Python基于Tkinter的HelloWorld入门实例

    本文实例讲述了Python基于Tkinter的HelloWorld入门实例.分享给大家供大家参考.具体分析如下: 初学Python,打算做几个Tkinter的应用来提高. 刚学的HelloWorld,秀一下.我用Python3.2的,Windows版本的. 源代码如下: #导入sys和tkinter模块 import sys, tkinter #创建主窗口 root = tkinter.Tk() root.title("HelloWorld") root.minsize(200, 10

  • Python基于tkinter模块实现的改名小工具示例

    本文实例讲述了Python基于tkinter模块实现的改名小工具.分享给大家供大家参考,具体如下: #!/usr/bin/env python #coding=utf-8 # # 版权所有 2014 yao_yu # 本代码以MIT许可协议发布 # 文件名批量加.xls后缀 # 2014-04-21 创建 # import os import tkinter as tk from tkinter import ttk version = '2014-04-21' app_title = '文件名

  • Python基于Tkinter实现的记事本实例

    本文实例讲述了Python基于Tkinter实现的记事本.分享给大家供大家参考.具体如下: from Tkinter import * root = Tk('Simple Editor') mi=StringVar() Label(text='Please input something you like~' ).pack() te = Text(height = 30,width =100) te.pack() Label(text=' File name ').pack(side = LEF

  • python基于Tkinter库实现简单文本编辑器实例

    本文实例讲述了python基于Tkinter库实现简单文本编辑器的方法.分享给大家供大家参考.具体实现方法如下: ## {{{ http://code.activestate.com/recipes/578568/ (r1) from Tkinter import * from tkSimpleDialog import askstring from tkFileDialog import asksaveasfilename from tkMessageBox import askokcance

  • Python基于Tkinter模块实现的弹球小游戏

    本文实例讲述了Python基于Tkinter模块实现的弹球小游戏.分享给大家供大家参考,具体如下: #!usr/bin/python #-*- coding:utf-8 -*- from Tkinter import * import Tkinter import random import time #创建小球的类 class Ball: def __init__(self,canvas,paddle,color): #参数:画布,球拍和颜色 self.canvas = canvas self

  • Python基于mysql实现学生管理系统

    本篇文章主要介绍了Python基于mysql实现学生管理系统,分享给大家,具体如下: import pymysql import re def idinput(string): ID = input(string) pattern = re.compile("^\d{1,3}$") while not re.match(pattern, ID): ID = input("请输入1-3位整数:") return ID def appendStudentInfo():

  • Python基于Tkinter编写crc校验工具

    本篇文章,完全是用来记录代码用的,目的是使用Python,基于Tkinter编写crc校验工具. # -*- coding: utf-8 -*- import Tkinter import tkFileDialog WIDTH = 16 TOPBIT = (1 << (WIDTH - 1)) crcTable = {} class FindLocation(object): def __init__(self): #创建主窗口,用于容纳其它组件 self.root = Tkinter.Tk()

  • python基于tkinter制作无损音乐下载工具(附源码)

    继续写GUI,本次依然使用Tkinter设计一款图形界面,使用Tkinter做一款音乐下载软件,听起来听平常的,但是我这款软件能够下载 无损音乐下载软件,听起来不错吧,Let`s go! 一.准备工作 python Tkinter 二.预览 1.搜索 2.下载 3.结果 无损音乐就这样下载完了. 三.详细设计 这里仅展示我设计的整体思路. 四.源代码 4.1 Music_Search-v1.0.py from tkinter import * from tkinter import ttk fr

  • python基于tkinter制作m3u8视频下载工具

    这是我为了学习tkinter用python 写的一个下载m3u8视频的小程序,程序使用了多线程下载,下载后自动合并成一个视频文件,方便播放. 目前的众多视频都是m3u8的播放类型,只要知道视频的m3u8地址,就可以完美下载整个视频. m3u8地址获取 打开浏览器,点开你要获取地址的视频 重要的来了,右键>>审查元素或者按F12也可以 根据开发或测试的实际环境选择相应的设备,选择iphone6 plus 选择好了以后,刷新页面,点击漏斗,选择media,一定刷新之后再点击,没出来的话切换几下选项

随机推荐