python随机显示四级词汇

python实现一个浮动窗口随机显示四级单词在桌面跑来跑去

实现一个浮动窗体随机显示四级单词在windows桌面置顶移动

tkinter库来创建窗口和显示单词,以及random库来随机选择单词。 使用after方法来定时更新窗口的位置,实现单词窗口的慢慢移动效果

使用pandas读取Excel文件,并将每行的单词和释义对应关系存储在一个字典中

实现鼠标悬停时显示对应的解释,或者直接显示对应解释FloatingWordWindow类中添加一个标签来显示解释,并在鼠标进入标签时更新解释内容

鼠标悬停的时候显示对应的解释,也就是对应键的值 不悬停的时候,不显示解释,返回显示随机单词 wraplength是自动换行

使用虚拟环境执行 E:\pycharm\anaconda\python.exe vocabulary.py

后台执行 E:\pycharm\anaconda\python.exe vocabulary.py & win不可用 在Linux或Mac系统下,你可以使用&符号

在Windows系统下,你可以使用start命令来启动一个新的窗口并在其中运行脚本,然后关闭该窗口,脚本将在后台继续执行。例如:

start /B E:\pycharm\anaconda\python.exe vocabulary.py 也不行

powershell可以

 cd "E:\pythonProject\other"
Start-Process -FilePath "E:\pycharm\anaconda\python.exe" -ArgumentList "vocabulary.py" -WindowStyle Hidden

初始版本

import tkinter as tk
import random
import pandas as pd
​
class FloatingWordWindow:def __init__(self, master):self.master = masterself.master.overrideredirect(True)  # 隐藏标题栏和边框self.master.attributes('-topmost', True)  # 置顶窗口self.master.attributes('-alpha', 0.7)  # 设置透明度self.master.geometry('200x50+100+100')  # 初始位置和大小self.word_label = tk.Label(self.master, font=('Arial', 20))self.word_label.pack(expand=True)self.move_window()
​def move_window(self):x = random.randint(0, self.master.winfo_screenwidth() - self.master.winfo_width())y = random.randint(0, self.master.winfo_screenheight() - self.master.winfo_height())self.master.geometry(f'+{x}+{y}')self.master.after(3000, self.move_window)  # 每隔3秒更新一次位置
​def update_word(self):words = ['apple', 'banana', 'orange', 'grape', 'watermelon']  # 替换为你的四级单词列表df=pd.read_excel("大学英语四级词汇完整版带音标-顺序版.xlsx")# 提取单词和释义列的内容word_column = df.columns[0]  # 第一列是单词列meaning_column = df.columns[1]  # 第二列是释义列# 创建一个字典,将单词和释义对应关系存储起来word_meaning_dict = dict(zip(df[word_column], df[meaning_column]))# 将字典的键转换为列表words_list = list(word_meaning_dict.keys())# 随机选择一个单词random_word = random.choice(words_list)self.word_label.config(text=random_word)# 绑定鼠标悬停事件self.word_label.bind("<Enter>",lambda event, word=random_word: self.show_meaning(event, word, word_meaning_dict))self.word_label.bind("<Leave>", lambda event: self.hide_meaning(random_word))  # 绑定鼠标移出事件self.master.after(3000, self.update_word)  # 每隔3秒更新一次单词def show_meaning(self, event, word, word_meaning_dict):meaning = word_meaning_dict.get(word, "Meaning not found")self.word_label.config(text=f"{meaning}",font=('Arial', 10),wraplength=150)
​def hide_meaning(self,random_word):self.word_label.config(text=random_word,font=('Arial', 20),wraplength=150)  # 清空文本
def main():root = tk.Tk()root.attributes('-toolwindow', True)  # 隐藏任务栏图标root.attributes('-alpha', 0.7)  # 设置透明度root.geometry('200x50+150+150')  # 初始位置和大小app = FloatingWordWindow(root)app.update_word()root.mainloop()
​
if __name__ == '__main__':main()

优化这个代码让excel读取只运行一次

import tkinter as tk
import random
import pandas as pd
​
class FloatingWordWindow:def __init__(self, master):self.master = masterself.master.overrideredirect(True)  # 隐藏标题栏和边框self.master.attributes('-topmost', True)  # 置顶窗口self.master.attributes('-alpha', 0.7)  # 设置透明度self.master.geometry('200x50+100+100')  # 初始位置和大小self.word_label = tk.Label(self.master, font=('Arial', 20))self.word_label.pack(expand=True)self.load_word_meanings()  # 加载单词和释义self.move_window()
​def load_word_meanings(self):df = pd.read_excel("大学英语四级词汇完整版带音标-顺序版.xlsx")self.word_meaning_dict = dict(zip(df[df.columns[0]], df[df.columns[1]]))  # 单词和释义对应的字典
​def move_window(self):x = random.randint(0, self.master.winfo_screenwidth() - self.master.winfo_width())y = random.randint(0, self.master.winfo_screenheight() - self.master.winfo_height())self.master.geometry(f'+{x}+{y}')self.master.after(3000, self.move_window)  # 每隔3秒更新一次位置
​def update_word(self):random_word = random.choice(list(self.word_meaning_dict.keys()))  # 随机选择一个单词self.word_label.config(text=random_word)# 绑定鼠标悬停事件self.word_label.bind("<Enter>",lambda event, word=random_word: self.show_meaning(event, word))self.word_label.bind("<Leave>", lambda event: self.hide_meaning(random_word))  # 绑定鼠标移出事件self.master.after(3000, self.update_word)  # 每隔3秒更新一次单词
​def show_meaning(self, event, word):meaning = self.word_meaning_dict.get(word, "Meaning not found")self.word_label.config(text=f"{meaning}", font=('Arial', 10), wraplength=150)
​def hide_meaning(self, word):self.word_label.config(text=word, font=('Arial', 20), wraplength=150)  # 清空文本
​
def main():root = tk.Tk()root.attributes('-toolwindow', True)  # 隐藏任务栏图标root.attributes('-alpha', 0.7)  # 设置透明度root.geometry('200x50+150+150')  # 初始位置和大小app = FloatingWordWindow(root)app.update_word()root.mainloop()
​
if __name__ == '__main__':main()
​

优化二 悬停显示

import tkinter as tk
import random
import pandas as pd
​
class FloatingWordWindow:def __init__(self, master):self.master = masterself.master.overrideredirect(True)  # 隐藏标题栏和边框self.master.attributes('-topmost', True)  # 置顶窗口self.master.attributes('-alpha', 0.7)  # 设置透明度self.master.geometry('200x50+100+100')  # 初始位置和大小self.word_label = tk.Label(self.master, font=('Arial', 20))self.word_label.pack(expand=True)self.move_window()
​# 读取 Excel 数据self.load_excel_data()
​def move_window(self):x = random.randint(0, self.master.winfo_screenwidth() - self.master.winfo_width())y = random.randint(0, self.master.winfo_screenheight() - self.master.winfo_height())self.master.geometry(f'+{x}+{y}')self.master.after(3000, self.move_window)  # 每隔3秒更新一次位置
​def load_excel_data(self):self.df = pd.read_excel("大学英语四级词汇完整版带音标-顺序版.xlsx")self.word_column = self.df.columns[0]  # 第一列是单词列self.meaning_column = self.df.columns[1]  # 第二列是释义列# 创建一个字典,将单词和释义对应关系存储起来self.word_meaning_dict = dict(zip(self.df[self.word_column], self.df[self.meaning_column]))# 将字典的键转换为列表self.words_list = list(self.word_meaning_dict.keys())
​def update_word(self):# 随机选择一个单词random_word = random.choice(self.words_list)self.word_label.config(text=random_word)# 绑定鼠标悬停事件self.word_label.bind("<Enter>",lambda event, word=random_word: self.show_meaning(event, word))self.word_label.bind("<Leave>", lambda event: self.hide_meaning(random_word))  # 绑定鼠标移出事件self.master.after(3000, self.update_word)  # 每隔3秒更新一次单词
​def show_meaning(self, event, word):meaning = self.word_meaning_dict.get(word, "Meaning not found")self.word_label.config(text=f"{meaning}", font=('Arial', 10), wraplength=150)
​def hide_meaning(self, random_word):self.word_label.config(text=random_word, font=('Arial', 20), wraplength=150)  # 清空文本
​
def main():root = tk.Tk()root.attributes('-toolwindow', True)  # 隐藏任务栏图标root.attributes('-alpha', 0.7)  # 设置透明度root.geometry('200x50+150+150')  # 初始位置和大小app = FloatingWordWindow(root)app.update_word()root.mainloop()
​
if __name__ == '__main__':main()

优化三 直接显示

import tkinter as tk
import random
import pandas as pd
​
class FloatingWordWindow:def __init__(self, master):self.master = masterself.master.overrideredirect(True)  # 隐藏标题栏和边框self.master.attributes('-topmost', True)  # 置顶窗口self.master.attributes('-alpha', 0.7)  # 设置透明度self.word_label = tk.Label(self.master, font=('Arial', 18))self.word_label.pack(expand=True, padx=0, pady=0)self.load_word_meanings()  # 加载单词和释义self.move_window()
​def load_word_meanings(self):df = pd.read_excel("大学英语四级词汇完整版带音标-顺序版.xlsx")self.word_meaning_dict = dict(zip(df[df.columns[0]], df[df.columns[1]]))  # 单词和释义对应的字典
​def move_window(self):x = random.randint(0, self.master.winfo_screenwidth() - self.master.winfo_width())y = random.randint(0, self.master.winfo_screenheight() - self.master.winfo_height())self.master.geometry(f'100x25+{x}+{y}')  # 初始窗口大小为200x50self.master.after(3000, self.move_window)  # 每隔3秒更新一次位置
​def update_word(self):random_word = random.choice(list(self.word_meaning_dict.keys()))  # 随机选择一个单词meaning = self.word_meaning_dict.get(random_word, "Meaning not found")# meaning = meaning.replace("\n", "--")str=random_word+"\n"+meaning;num_newlines = str.count("\n")self.word_label.config(text=random_word+"\n"+meaning,justify="left",padx=0, pady=0) self.word_label.config(height=(num_newlines+1)*25)  # Set height based on number of newlines# 根据单词长度和字体大小调整窗口大小word_length = len(random_word+meaning)font_size = 18window_width = max(18, word_length * font_size)self.master.geometry(f'{window_width}x{(num_newlines+1)*25}')  # 调整窗口宽度# # 绑定鼠标悬停事件# self.master.bind("<Enter>",#                      lambda event, word=random_word: self.show_meaning(event, word))# self.master.bind("<Leave>", lambda event: self.hide_meaning(random_word))  # 绑定鼠标移出事件# # 绑定左键单击事件self.master.bind("<Button-1>", lambda event: self.update_word())self.master.after(3000, self.update_word)  # 每隔3秒更新一次单词
​def show_meaning(self, event, word):meaning = self.word_meaning_dict.get(word, "Meaning not found")meaning = meaning.replace("\n", "--")self.word_label.config(text=f"{meaning}", font=('Arial', 10),padx=0, pady=0)word_length = len(meaning)font_size = 20window_width = max(20, word_length * font_size)self.master.geometry(f'{window_width}x30')  # 调整窗口宽度
​def hide_meaning(self, word):self.word_label.config(text=word, font=('Arial', 20), wraplength=150,padx=0, pady=0)  # 清空文本
​
def main():root = tk.Tk()root.attributes('-toolwindow', True)  # 隐藏任务栏图标root.attributes('-alpha', 0.7)  # 设置透明度app = FloatingWordWindow(root)app.update_word()root.mainloop()
​
if __name__ == '__main__':main()
​

优化四

随机不重复

import tkinter as tk
import random
import pandas as pd
​
class FloatingWordWindow:def __init__(self, master):self.master = masterself.master.overrideredirect(True)  # 隐藏标题栏和边框self.master.attributes('-topmost', True)  # 置顶窗口self.master.attributes('-alpha', 0.7)  # 设置透明度self.word_label = tk.Label(self.master, font=('Arial', 20))self.word_label.pack(expand=True, padx=0, pady=0)self.load_word_meanings()  # 加载单词和释义self.move_window()
​def load_word_meanings(self):df = pd.read_excel("大学英语四级词汇完整版带音标-顺序版.xlsx")self.word_meaning_dict = dict(zip(df[df.columns[0]], df[df.columns[1]]))  # 单词和释义对应的字典self.available_words = list(self.word_meaning_dict.keys())  # 可选择的单词列表
​def move_window(self):x = random.randint(0, self.master.winfo_screenwidth() - self.master.winfo_width())y = random.randint(0, self.master.winfo_screenheight() - self.master.winfo_height())self.master.geometry(f'100x30+{x}+{y}')  # 初始窗口大小为200x50self.master.after(3000, self.move_window)  # 每隔3秒更新一次位置
​def update_word(self):if not self.available_words:  # 如果可选择的单词列表为空,则重新加载self.available_words = list(self.word_meaning_dict.keys())
​random_word = random.choice(self.available_words)  # 从可选择的单词列表中随机选择一个单词self.available_words.remove(random_word)  # 从可选择的单词列表中删除已选择的单词self.word_label.config(text=random_word,padx=0, pady=0)# 根据单词长度和字体大小调整窗口大小word_length = len(random_word)font_size = 20window_width = max(20, word_length * font_size)self.master.geometry(f'{window_width}x30')  # 调整窗口宽度# 绑定鼠标悬停事件self.master.bind("<Enter>",lambda event, word=random_word: self.show_meaning(event, word))self.master.bind("<Leave>", lambda event: self.hide_meaning(random_word))  # 绑定鼠标移出事件# # 绑定左键单击事件self.master.bind("<Button-1>", lambda event: self.update_word())self.master.after(3000, self.update_word)  # 每隔3秒更新一次单词
​def show_meaning(self, event, word):meaning = self.word_meaning_dict.get(word, "Meaning not found")meaning = meaning.replace("\n", "--")word_length = len(meaning)font_size = 11window_width = max(10, word_length * font_size)self.master.geometry(f'{window_width}x30')  # 调整窗口宽度self.word_label.config(text=f"{meaning}", font=('Arial', 10), justify="left", wraplength=999, padx=0, pady=0)
​def hide_meaning(self, word):self.word_label.config(text=word, font=('Arial', 20), wraplength=150,padx=0, pady=0)  # 清空文本
​
def main():root = tk.Tk()root.attributes('-toolwindow', True)  # 隐藏任务栏图标root.attributes('-alpha', 0.7)  # 设置透明度app = FloatingWordWindow(root)app.update_word()root.mainloop()
​
if __name__ == '__main__':main()
​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11246.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

有机硅改性氟树脂性能进一步提升 市场需求增长空间大

有机硅改性氟树脂性能进一步提升 市场需求增长空间大 有机硅改性氟树脂&#xff0c;利用有机硅树脂对氟树脂进行改性得到一种新型的、性能更为优异的树脂材料。 有机硅树脂&#xff0c;具有柔韧性好、电绝缘、憎水、耐候、耐老化等优点&#xff0c;但固化温度高且时间长、附着力…

使用Apache Spark从MySQL到Kafka再到HDFS的数据转移

使用Apache Spark从MySQL到Kafka再到HDFS的数据转移 在本文中&#xff0c;将介绍如何构建一个实时数据pipeline&#xff0c;从MySQL数据库读取数据&#xff0c;通过Kafka传输数据&#xff0c;最终将数据存储到HDFS中。我们将使用Apache Spark的结构化流处理和流处理功能&#…

MySQL中表的插入,修改,删除语法

插入 插入数据有四种方法,代码如下 -- 给表中添加元素 -- insert into 表名 (列名) values(数据)INSERT INTO student(NAME,gender,birthday,phone)VALUES(张三,男,2003-2-10,13333333333) INSERT INTO student(NAME,gender,birthday,phone,address,height,rig_time) VALUES(…

在Mac环境下打包Python应用

1、创建虚拟环境 conda create -n ur_name python3.7 pip install -r requirement.txt 2、配置文件生成 cd ur_project py2applet --make-setup __main__.py 3、APP打包 # 编辑setup.py文件,具体参考本文文献 python setup.py py2app 用 py2app 将 Python 脚本打包成 Mac…

高级优化理论与方法(十二)

高级优化理论与方法&#xff08;十二&#xff09; LPDuality of LPWeek LP Duality TheoremStrong LP Duality TheoremCorollary Complementary Slackness ConditionRemarksExample Non-Simplex MethodsKhachiyan (Ellipsoid)Karmarkar (Interior point) Integer Linear Progra…

Leetcode-有效的括号

20. 有效的括号 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/valid-parentheses/ 题目 给定一个只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判断字符串是否有效。 有效字符串需满足&…

MongoDB 数据探索之道:查询文档操作详解

在 MongoDB 数据库中&#xff0c;查询文档是一种强大的工具&#xff0c;能够帮助您深入了解数据并提取所需信息。无论是从大型数据集中检索特定记录&#xff0c;还是进行数据统计和分析&#xff0c;查询文档都是不可或缺的。在本指南中&#xff0c;我们将深入探讨 MongoDB 查询…

c++ map,set封装

map 是一个 kv 结构&#xff0c; set 是 k结构。 我们前面模拟实现了 红黑树&#xff0c;但是我们实现的红黑树把 kv 结构写死了&#xff0c;怎么样才能用泛型编程的思想来实现map和set呢 我们先简单看一下原码中是怎么实现的 1.原码实现逻辑 我们打开这里的 stl_set.h 通过…

Dubbo基本使用

Dubbo基本使用 1.项目介绍2.开发步骤2.1 启动注册中心2.2 初始化项目2.3 添加 Maven 依赖2.3.1 父pom.xml2.3.1 consumer模块和provider模块pom.xml 2.4 定义服务接口2.5 定义服务端的实现2.6 配置服务端 Yaml 配置文件2.7 配置消费端 Yaml 配置文件2.8 基于 Spring 配置服务端…

芯片原厂工程师带你学 Linux 驱动

芯片原厂工程师&#xff0c;手把手带你学Linux驱动&#xff0c;感兴趣的点个关注私聊呀。 介绍&#xff1a; https://b2qtatgfkp.feishu.cn/docx/HoBKdezVFo6HlVx0hXPc8R7QnWc

Mysql sql_mode=only_full_group_by时如何实现根据单个字段分组

SELECT* FROMTABLE_NAME t group by device_id ORDER BY create_time desc报错 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column TABLE_NAME.t.id which is not functionally dependent on columns in GROUP BY clause; this is …

JINGWHALE 数字认证体系 · 进阶知识库

JINGWHALE 数字认证体系 是 JINGWHALE 数字科学艺术创新中心 的数字认证服务。 ◢◤ 宗旨 致力于数字化知行合一的知识赋能&#xff01; ◥ 数字化人才培养 培养数字化思维&#xff0c;传播数字化知识&#xff0c;赋能各行业数字化。 ◥ 职业人才发展 无缝衔接学校高等…

LeetCode题目104: 二叉树的最大深度(递归\迭代\层序遍历\尾递归优化\分治法实现 )

❤️❤️❤️ 欢迎来到我的博客。希望您能在这里找到既有价值又有趣的内容&#xff0c;和我一起探索、学习和成长。欢迎评论区畅所欲言、享受知识的乐趣&#xff01; 推荐&#xff1a;数据分析螺丝钉的首页 格物致知 终身学习 期待您的关注 导航&#xff1a; LeetCode解锁100…

百度地图提供的微信小程序的功能少到让我想跳楼

呜呜呜。 为什么uni-app使用vue-baidu-map然后启动在微信开发者工具就会有一大堆不明所以的报错啊

EPICS database练习

给定一个以下的数据库&#xff1a; # 指定Limit的上限&#xff0c;初始为10&#xff0c;可以通过通道访问进行设置&#xff0c;上限为100 record(ao, "$(P)Limit") { field(DRVH, "100") field(DOL, "10") field(PINI, "YES") }# 一个…

el-menu 保持展开点击不收缩 默认选择第一个菜单

<el-menu:default-openeds"[/system]" 数组 默认展开第一个:collapse"isCollapse"close"handleClose" 点击关闭的时候 让菜单打开 就可以实现保持展开效果ref"menus":unique-opened"true":active-text-color"se…

自媒体探索

很多做自媒体的群体说最重要的两点就是&#xff1a;学习和坚持 因为保持热情和创意的持续输出时间是很难的事情。 基于自媒体调研有两点建议&#xff1a; 以自己的专业/职业/兴趣为主&#xff0c;这样你会有相对稳定的输出。 以短视频为主的抖音/快手/视频号&#xff0c;还有…

2024中国(重庆)人工智能展览会8月举办

2024中国(重庆)人工智能展览会8月举办 邀请函 主办单位&#xff1a; 中国航空学会 重庆市南岸区人民政府 招商执行单位&#xff1a; 重庆港华展览有限公司 【报名I59交易会 2351交易会 9466】 展会背景&#xff1a; 2024中国航空科普大会暨第八届全国青少年无人机大赛在…

QT 项目打包(为了后期远程实验用)

一、环境准备 1、一个项目工程 二、步骤 1、将编译器设置调整为Release模式 二、对项目重新编译构建 三、可以看到工程目录这个文件夹 打开工程目录文件夹的Release文件夹&#xff0c;我的路径如下 四、新建一个文件夹&#xff0c;将上述路径文件夹下的exe文件复制到新的文…

Windows的消息过程调用与窗口位于同一个线程

消息过程函数和窗口通常在同一个线程中运行。 在Windows中&#xff0c;每个窗口都有一个与之相关联的线程&#xff0c;这个线程负责处理窗口的消息。当窗口接收到消息时&#xff0c;系统会将消息发送给创建窗口的线程&#xff0c;并在该线程上调用窗口过程函数来处理消息。 这…