import tkinter as tk
##导入messagebox模块
from tkinter import messagebox
###登录成功后使登录窗口消失,打开小程序窗
def login():
username = entry_username.get()
password = entry_password.get()
if username == "admin" and password == "123456":
root.destroy() # 销毁登录页面窗口
root_window.deiconify() # 打开模拟的小程序页面
else:
messagebox.showerror("提示", "用户名或密码错误")
root = tk.Tk()
root.title("登录页面")
root.geometry("400x300")
label_username = tk.Label(root, text="用户名:")
label_username.pack()
entry_username = tk.Entry(root)
entry_username.pack()
label_password = tk.Label(root, text="密码:")
label_password.pack()
entry_password = tk.Entry(root, show="*")
entry_password.pack()
login_button = tk.Button(root, text="登录", command=login)
login_button.pack()
root.mainloop()
###构建主窗口
root_window = tk.Toplevel() # 改用Toplevel作为子窗口
root_window.withdraw()
#设置窗口标题
root_window.title('随机单词小程序')
#设置窗口大小
root_window.geometry('500x300')
#设置窗口图标
root_window.iconbitmap('')
#设置窗口不能被改变大小
root_window.resizable(0,0)
#设置窗口背景
root_window.config(bg='white')
#设置动态字符串,用于存放文件名
cur_filename = tk.StringVar()
#导入文件对话框模块
import tkinter.filedialog
####定义选择文件的函数
def getfile():
# 从本地选择一个文件,并返回文件的目录
filename = tkinter.filedialog.askopenfilename()
if filename != '':
cur_filename.set(filename)
else:
cur_filename.set('您没有选择任何文件')
####定义随机函数可以在不同类型文本中随机选取
word_label = tk.Label(...)
import random
def random_select():
# 修正后的读取逻辑
with open(cur_filename.get()) as f:
wordlist = [row.strip() for row in f]
# 修正结果显示
word_label.config(text=result_txt)
#添加文字提示
info = tk.Label(root_window,text='快来背单词吧!',bg='gray',fg='yellow',font=('FORTE.TTF',20,'normal'))
#选择文件后信息显示到此文本框
filename_text = tk.Entry(root_window,textvariable=cur_filename)
##添加选择单词文件的按钮
select_file = tk.Button(root_window,text = '选择文件',command = getfile)
# 添加选择单词个数的组件
number_txt = tk.Label(root_window,text='单词个数:',bg='gray',fg='yellow',font=('FORTE.TTF',20,'normal'))
number_entry = tk.Entry(root_window)
#添加随机单词按钮
select_number = tk.Button(root_window,text = '随机单词',command = random_select)
#添加一个Label标签用于显示单词结果
word = tk.Label(root_window,text='',bg='gray',fg='blue',font=('FORTE.TTF',20,'normal'))
#将各组件加载到主窗口
info.grid(row=0,columnspan=2,padx=10, pady=5)
select_file.grid(row=1,column=0,padx=10, pady=5)
filename_text.grid(row=1,column=1,padx=10, pady=5)
number_txt.grid(row=2,column=0,padx=10, pady=5)
number_entry.grid(row=2,column=1,padx=10, pady=5)
select_number.grid(row=3,column=0,padx=10, pady=5)
word.grid(row=4,columnspan=2,padx=10, pady=5)
#开启主循环,让窗口处于显示状态
root_window.mainloop()
D:\download\python.exe D:\桌面\计算机\随机单词小程序.py
Exception in Tkinter callback
Traceback (most recent call last):
File "D:\download\Lib\tkinter\__init__.py", line 2068, in __call__
return self.func(*args)
~~~~~~~~~^^^^^^^
File "D:\桌面\计算机\随机单词小程序.py", line 17, in login
root_window.deiconify() # 打开模拟的小程序页面
^^^^^^^^^^^
NameError: name 'root_window' is not defined
Traceback (most recent call last):
File "D:\桌面\计算机\随机单词小程序.py", line 78, in <module>
word_label = tk.Label(...)
File "D:\download\Lib\tkinter\__init__.py", line 3361, in __init__
Widget.__init__(self, master, 'label', cnf, kw)
~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\download\Lib\tkinter\__init__.py", line 2766, in __init__
self._setup(master, cnf)
~~~~~~~~~~~^^^^^^^^^^^^^
File "D:\download\Lib\tkinter\__init__.py", line 2735, in _setup
self.tk = master.tk
^^^^^^^^^
AttributeError: 'ellipsis' object has no attribute 'tk'
进程已结束,退出代码为 1