5个有趣的Python脚本:tkinter制作计算器GUI

2022-10-2011:56:05编程语言入门到精通Comments1,209 views字数 5618阅读模式

Python可以玩的方向有很多,比如爬虫、预测分析、GUI、自动化、图像处理、可视化等等,可能只需要十几行代码就能实现酷炫的功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28679.html

因为Python是动态脚本语言,所以代码逻辑比Java要简要很多,实现同样的功能少写很多代码。而且Python生态有众多的第三方工具库,把功能都封装在包里,只需要你调用接口,就能使用复杂的功能。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28679.html

下面举几个简单好玩的脚本例子,初学者可以照着代码写写,能快速掌握python语法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28679.html

1、使用PIL、Matplotlib、Numpy对模糊老照片进行修复

# encoding=utf-8import numpy as npimport matplotlib.pyplot as pltfrom PIL import Imageimport os.path# 读取图片img_path = "E:\\test.jpg"img = Image.open(img_path)# 图像转化为numpy数组img = np.asarray(img)flat = img.flatten()# 创建函数def get_histogram(image, bins):    # array with size of bins, set to zeros    histogram = np.zeros(bins)    # loop through pixels and sum up counts of pixels    for pixel in image:        histogram[pixel] += 1    # return our final result    return histogram# execute our histogram functionhist = get_histogram(flat, 256)# execute the fncs = np.cumsum(hist)# numerator & denomenatornj = (cs - cs.min()) * 255N = cs.max() - cs.min()# re-normalize the cumsumcs = nj / N# cast it back to uint8 since we cant use floating point values in imagescs = cs.astype(uint8)# get the value from cumulative sum for every index in flat, and set that as img_newimg_new = cs[flat]# put array back into original shape since we flattened itimg_new = np.reshape(img_new, img.shape)# set up side-by-side image displayfig = plt.figure()fig.set_figheight(15)fig.set_figwidth(15)# display the real imagefig.add_subplot(1, 2, 1)plt.imshow(img, cmap=gray)plt.title("Image Before Contrast Adjustment")# display the new imagefig.add_subplot(1, 2, 2)plt.imshow(img_new, cmap=gray)plt.title("Image After Contrast Adjustment")filename = os.path.basename(img_path)# plt.savefig("E:\\" + filename)plt.show()

2、将文件批量压缩,使用zipfile库

import osimport zipfilefrom random import randrangedef zip_dir(path, zip_handler):    for root, dirs, files in os.walk(path):        for file in files:            zip_handler.write(os.path.join(root, file))if __name__ == __main__:    to_zip = input("""Enter the name of the folder you want to zip(N.B.: The folder name should not contain blank spaces)>""")    to_zip = to_zip.strip() + "/"    zip_file_name = fzip{randrange(0,10000)}.zip    zip_file = zipfile.ZipFile(zip_file_name, w, zipfile.ZIP_DEFLATED)    zip_dir(to_zip, zip_file)    zip_file.close()    print(fFile Saved as {zip_file_name})

3、使用tkinter制作计算器GUI

tkinter是python自带的GUI库,适合初学者练手创建小软件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28679.html

import tkinter as tkroot = tk.Tk()  # Main box windowroot.title("Standard Calculator")  # Title shown at the title barroot.resizable(0, 0)  # disabling the resizeing of the window# Creating an entry field:e = tk.Entry(root,             width=35,             bg=#f0ffff,             fg=black,             borderwidth=5,             justify=right,             font=Calibri 15)e.grid(row=0, column=0, columnspan=3, padx=12, pady=12)def buttonClick(num):  # function for clicking    temp = e.get(    )  # temporary varibale to store the current input in the screen    e.delete(0, tk.END)  # clearing the screen from index 0 to END    e.insert(0, temp + num)  # inserting the incoming number inputdef buttonClear():  # function for clearing    e.delete(0, tk.END)# 代码过长,部分略

4、PDF转换为Word文件

使用pdf2docx库,可以将PDF文件转为Word格式文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28679.html

from pdf2docx import Converterimport os import sys# Take PDFs path as input pdf = input("Enter the path to your file: ")assert os.path.exists(pdf), "File not found at, "+str(pdf)f = open(pdf,r+)#Ask for custom name for the word docdoc_name_choice = input("Do you want to give a custom name to your file ?(Y/N)")if(doc_name_choice == Y or doc_name_choice == y):    # User input    doc_name = input("Enter the custom name : ")+".docx"    else:    # Use the same name as pdf    # Get the file name from the path provided by the user    pdf_name = os.path.basename(pdf)    # Get the name without the extension .pdf    doc_name =  os.path.splitext(pdf_name)[0] + ".docx"    # Convert PDF to Wordcv = Converter(pdf)#Path to the directorypath = os.path.dirname(pdf)cv.convert(os.path.join(path, "", doc_name) , start=0, end=None)print("Word doc created!")cv.close()

5、Python自动发送邮件

使用smtplib和email库可以实现脚本发送邮件文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28679.html

import smtplibimport email# 负责构造文本from email.mime.text import MIMEText# 负责构造图片from email.mime.image import MIMEImage# 负责将多个对象集合起来from email.mime.multipart import MIMEMultipartfrom email.header import Header# SMTP服务器,这里使用163邮箱mail_host = "smtp.163.com"# 发件人邮箱mail_sender = "******@163.com"# 邮箱授权码,注意这里不是邮箱密码,如何获取邮箱授权码,请看本文最后教程mail_license = "********"# 收件人邮箱,可以为多个收件人mail_receivers = ["******@qq.com","******@outlook.com"]mm = MIMEMultipart(related)# 邮件主题subject_content = """Python邮件测试"""# 设置发送者,注意严格遵守格式,里面邮箱为发件人邮箱mm["From"] = "sender_name<******@163.com>"# 设置接受者,注意严格遵守格式,里面邮箱为接受者邮箱mm["To"] = "receiver_1_name<******@qq.com>,receiver_2_name<******@outlook.com>"# 设置邮件主题mm["Subject"] = Header(subject_content,utf-8)# 邮件正文内容body_content = """你好,这是一个测试邮件!"""# 构造文本,参数1:正文内容,参数2:文本格式,参数3:编码方式message_text = MIMEText(body_content,"plain","utf-8")# 向MIMEMultipart对象中添加文本对象mm.attach(message_text)# 二进制读取图片image_data = open(a.jpg,rb)# 设置读取获取的二进制数据message_image = MIMEImage(image_data.read())# 关闭刚才打开的文件image_data.close()# 添加图片文件到邮件信息当中去mm.attach(message_image)# 构造附件atta = MIMEText(open(sample.xlsx, rb).read(), base64, utf-8)# 设置附件信息atta["Content-Disposition"] = attachment; filename="sample.xlsx"# 添加附件到邮件信息当中去mm.attach(atta)# 创建SMTP对象stp = smtplib.SMTP()# 设置发件人邮箱的域名和端口,端口地址为25stp.connect(mail_host, 25)  # set_debuglevel(1)可以打印出和SMTP服务器交互的所有信息stp.set_debuglevel(1)# 登录邮箱,传递参数1:邮箱地址,参数2:邮箱授权码stp.login(mail_sender,mail_license)# 发送邮件,传递参数1:发件人邮箱地址,参数2:收件人邮箱地址,参数3:把邮件内容格式改为strstp.sendmail(mail_sender, mail_receivers, mm.as_string())print("邮件发送成功")# 关闭SMTP对象stp.quit()

小结

Python还有很多好玩的小脚本,你可以根据自己的场景来编写,也可以使用现成的第三方库。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28679.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/28679.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/28679.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定