|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
处理随机数的那边出错,看不出问题,求大神帮忙
import tkinter as tk
import time
import random
f = open('info.txt', 'r', encoding='utf-8')
fi = f.readlines()
dic = {}
for lst in fi:
d = str(lst).strip('\n').split(",")
print(d)
dic[d[0]] = d[1]
print(d[0])
print(d[1])
# 销毁登录窗口,创建主窗口,子函数嵌套完成
def pop_window():
root.destroy()
win = tk.Tk()
win.title("MainBox")
win.geometry("350x500")
win.resizable(0,0)
win.iconbitmap('favicon.ico')
win.tk.call("source", "azure.tcl")
win.tk.call("set_theme", "dark")
varCount = tk.StringVar(root, value='')
entryCount = tk.Entry(win, width=10,textvariable=varCount)
entryCount.place(x=20, y=20, height=50)
num = tk.StringVar()
# 处理随机数函数
i=0
_num = tk.StringVar()
def _randnum():
#global i = 0
count = entryCount.get()
print(count)
num.set(str(random.sample(range(1,60),int(count))))
_num = num[i]
i += 1
return _num
# 绘制窗口组件
labelNumber = tk.Label(win,textvariable=_num,font=("Arial",48))
labelNumber.place(x=75,y=70)
buttonClick = tk.Button(win,text="Start",font=("Arial",18),command=_randnum)
buttonClick.place(x=20,y=200,width=100,height=60)
# 启动消息循环
win.update()
win.minsize(win.winfo_width(), win.winfo_height())
x_cordinate = int((win.winfo_screenwidth() / 2) - (win.winfo_width() / 2))
y_cordinate = int((win.winfo_screenheight() / 2) - (win.winfo_height() / 2))
win.geometry("+{}+{}".format(x_cordinate, y_cordinate - 20))
win.mainloop()
#登录窗口后销毁自身窗口呼出win窗口进行工作
# 登录事件处理函数
def login():
# 获取用户名和密码
buttonCancel['state'] = 'disable'
buttonOk['state'] = 'disable'
name = entryName.get()
pwd = entryPwd.get()
print(name)
print(pwd)
def OK():
root['height']=300
# 删除控件
labelPrompt.destroy()
labelMessage.destroy()
buttonOk['state']='active'
buttonCancel['state']='active'
if name in dic and dic[name] == pwd:
labelMessage = tk.Label(root,
text='Message',
fg='white',
bg='blue',
font=("Times New Roman",16),
justify=tk.RIGHT,
anchor='w',
width=80)
labelMessage.place(x=0,y=200,width=600,height=30)
root['height']=350
labelPrompt = tk.Label(root,
text='登陆成功',
font=("微软雅黑",14),
justify=tk.RIGHT,
anchor='e',
width=80)
labelPrompt.place(x=90,y=250,width=90,height=30)
buttonOkk = tk.Button(root,
text='ok',
font=("微软雅黑",14),
activebackground='#ff0000',
command=OK)
buttonOkk.place(x=500, y=300, width=80, height=30)
pop_window()
else:
labelMessage = tk.Label(root, text="Message "
" 请重新输入账号密码 ", fg='white', bg='blue',
font=("Times New Roman", 16),
justify=tk.RIGHT, anchor='w', width=600)
labelMessage.place(x=0, y=200, width=600, height=30)
root['height'] = 350
labelPrompt = tk.Label(root, text='用户名和密码不匹配', font=("微软雅黑", 14), justify=tk.RIGHT,
anchor='w',
width=100)
labelPrompt.place(x=90, y=250, width=180, height=30)
buttonOkk = tk.Button(root, text='ok', font=("微软雅黑", 14), activeforeground='#ff0000', command=OK)
buttonOkk.place(x=500, y=300, width=80, height=30)
# 取消事件处理函数
def cancel():
# 清除文本框
varName.set('')
varPwd.set('')
if __name__ == "__main__":
# 建立窗口
root = tk.Tk()
root.title("LoginBox")
root.geometry("600x300")
root.resizable(0, 0)
root.iconbitmap('favicon.ico')
root.tk.call("source", "azure.tcl")
root.tk.call("set_theme", "dark")
# 在窗口上创建标签组件
labelTitle = tk.Label(root, text='Login', font=("微软雅黑", 14), justify=tk.CENTER, anchor='center', width=200)
labelTitle.place(x=210, y=15, width=200, height=30)
labeName = tk.Label(root, text='Account:', font=("微软雅黑", 12), justify=tk.RIGHT, anchor='e', width=80)
labeName.place(x=50, y=50, width=125, height=30)
labeName = tk.Label(root, text='Password:', font=("微软雅黑", 12), justify=tk.RIGHT, anchor='e', width=80)
labeName.place(x=50, y=90, width=125, height=30)
# 创建文本框,同时设置相关变量
varName = tk.StringVar(root, value='')
entryName = tk.Entry(root, width=80, textvariable=varName)
entryName.place(x=200, y=50, width=250, height=30) # 创建密码文本框,同时设置关联的变量
varPwd = tk.StringVar(root, value='')
entryPwd = tk.Entry(root, show='*', width=80, textvariable=varPwd)
entryPwd.place(x=200, y=90, width=250, height=30)
# 创建Login按钮
buttonOk = tk.Button(root, text='确定', command=login)
buttonOk.place(x=200, y=135, width=80, height=30)
# 创建Cancel按钮
buttonCancel = tk.Button(root, text='取消', command=cancel)
buttonCancel.place(x=370, y=135, width=80, height=30)
# 启动消息循环
root.update()
root.minsize(root.winfo_width(), root.winfo_height())
x_cordinate = int((root.winfo_screenwidth() / 2) - (root.winfo_width() / 2))
y_cordinate = int((root.winfo_screenheight() / 2) - (root.winfo_height() / 2))
root.geometry("+{}+{}".format(x_cordinate, y_cordinate - 20))
root.mainloop()
|
|