用Python做一个简单的表白程序

我最近在看了一本Python tkinter从入门到精通,看了四章了,前面四章主要就是讲部件的共同属性,控件的布局,窗口的属性设置,于是利用这些做了个简单的程序,我将这个程序打包成了执行文件,放在了百度网盘,链接:https://pan.baidu.com/s/11t906qaPizuQtSZoV2AIgA 
提取码:ivku,网盘放的这个,不是最新版。最新版代码如下

#coding=gbk
#Version=1.1
from tkinter import *
import time,threading,openpyxl,os
win = Tk()  # 新建一个窗口
sh = win.winfo_screenheight()  # 获取屏幕的高
sw = win.winfo_screenwidth()  # 获取屏幕的宽
winh = int(sh / 4)  # 设置窗口的高
winw = int(sw / 3.5)  # 设置窗口的宽
x = int((sh - winh) / 2)  # 设置窗口的位置
y = int((sw - winw) / 2)  # 设置窗口的位置
win.geometry(f"{winw}x{winh}+{x}+{y}")  # 设置窗口的大小和位置
win.iconbitmap("圣诞老人.ico")
var1 = StringVar()  # 定义三个变量
var2 = StringVar()
var3 = StringVar()
# 创建三个列表
fname="表白程序文档.xlsx"
sname="表白"
words=['i,why,beause   you\n', 'love,do   you,are\n', 'you,love    me,a   good   gril']
def write_xlsx():
    """
    写入xlsx
    :return:
    """
    w=openpyxl.Workbook()
    ws=w.active
    ws.title="表白"
    for i in words:
        k=i.replace("\n", "").split(",")
        for j in k:
            print(i,j,f"当前位置{words.index(i)+1,k.index(j)+1}的值是{j}")
            ws.cell(words.index(i)+1,k.index(j)+1,value=j)
    w.save(fname)

def read_xlsx():
    """
    读取xlsx
    :return: 返回一个二维列表,子列表是列的值
    """
    cols=[]#存放列的
    rows=[]#存放行的
    #如果文件不在当前目录下就重新创建一个
    if os.path.exists(os.path.join(os.getcwd(),fname))==False:
        write_xlsx()
    ww=openpyxl.load_workbook(fname)#加载xlsx
    w=ww.active#激活sheet
    w.title="表白"#选择sheet
    wc=list(w.columns)
    """
    通过遍历列,并将列值放入列表
    """
    for i in wc:#3
        iw=wc.index(i)
        for j in i:#3
            rows.append(j.value)
        cols.append(rows[iw*len(i):(iw+1)*len(i)])
    return cols

def write_gui():
    """
    将读取的值写入界面
    :return:
    """
    word=read_xlsx()
    for i in word:
        """
        根据列值依次写入各个标签Label
        """
        var1.set(i[0])
        var2.set(i[1])
        var3.set(i[2])
        time.sleep(2)
        var1.set("")#清空标签的值
        var2.set("")
        var3.set("")

#写了三个标签Label和一个按钮Button
Label(win, textvariable=var1, font="微软雅黑 20 italic", fg="pink", bg="yellow").place(relx=0, rely=0, relwidth=0.35,relheight=1)
Label(win, textvariable=var2, font="微软雅黑 20 italic", fg="pink", bg="yellow").place(relx=0.35, rely=0, relwidth=0.2,relheight=1)
Label(win, textvariable=var3, font="微软雅黑 20 italic", fg="pink", bg="yellow").place(relx=0.55, rely=0, relwidth=0.33,relheight=1)
Button(win,text="开始",bg="cyan",fg="olive").place(relx=0.88, rely=0, relwidth=0.12, relheight=1)

#创建线程并启动
t=threading.Thread(target=write_gui)
t.start()
mainloop()

 效果图如下:

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值