我最近在看了一本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()
效果图如下: