Kivy 项目51斩百词 5

MRWord\pages\infopage\info.py

def read_random_word(self)

    def read_random_word(self):"""随机读取一条数据"""sql = "SELECT * FROM word WHERE id = (SELECT word_id FROM today ORDER BY RANDOM() limit 1)"rows = select_data(sql)if len(rows) == 0:# 先清除所有widgetspasselse:# 清除存在的三个按钮和标签self.ids.main_box.clear_widgets(children=[self.ids.three_labels_box, self.ids.box_button_anchor])# 绑定点击任意位置执行方法self.ids.main_box.bind(on_touch_down=self.anywhere_touch_down)print(rows)self.ids.word_to_study.text = rows[0][1]self.ids.phonetic.text = rows[0][3]

sql = "SELECT * FROM word WHERE id = (SELECT word_id FROM today ORDER BY RANDOM() limit 1)"

这个SQL查询语句的目的是从一个名为word的表中随机选择一个与today表相关的单词。具体解释如下:

  1. 外部查询

SELECT * FROM word WHERE id = ...

这部分查询是从word表中选择所有列(*表示所有列),但只选择那些其id满足某个条件的行。
       2. 内部查询(子查询)

(SELECT word_id FROM today ORDER BY RANDOM() LIMIT 1)

这是一个子查询,它做了以下几件事:

* 从`today`表中选择`word_id`列。  
* 使用`ORDER BY RANDOM()`对这些`word_id`进行随机排序。  
* 使用`LIMIT 1`只选择排序后的第一个`word_id`。

因此,整个查询的逻辑是:首先,从today表中随机选择一个word_id。然后,使用这个随机选择的word_idword表中选择相应的行。

但是,需要注意的是,如果today表中没有word_idword表中的id匹配,那么这个查询将不会返回任何结果。另外,如果today表为空,那么子查询可能会返回一个错误(取决于数据库的具体实现),因为不能从空集中选择一个随机元素。

为了避免这种情况,你可能需要添加一些额外的逻辑来处理这些情况,例如使用COALESCEIFNULL(取决于你的数据库系统)来提供一个默认值,或者确保today表在查询之前至少有一个条目。

MRWord\db\sqlite3_connect.py

def select_data(sql):

def select_data(sql):"""查询数据"""# cursor.execute('select * from word where id=?', ('1',))conn = sqlite3.connect(db_path)try:cursor = conn.cursor()# 执行sqlcursor.execute(sql)response = cursor.fetchall()cursor.close()return responseexcept Exception as e:logging.warning('Exception:%s' % e)finally:conn.close()

SQLiteStudio 中的word 数据库

添加print (rows)后得到的值

[(4, 'mail', 'n. 邮件;邮政,邮递;盔甲\nvt. 邮寄;给…穿盔甲\nvi. 邮寄;寄出\nn. (Mail)人名;(法)马伊\n\n\n', '[meɪl]', ' Your cheque is in the mail. ', '你的支票在邮寄中。', None, 4, '2019-11-19 16:47:46', 0)]

在给出的rows列表中,rows[0]是一个包含多个元素的元组。根据Python的索引规则,rows[0][1]表示访问这个元组的第二个元素(因为索引是从0开始的),而rows[0][3]表示访问这个元组的第四个元素。

因此:

  • rows[0][1] 是 'mail',这是元组的第二个元素。
  • rows[0][3] 是 '[meɪl]',这是元组的第四个元素。

所以:

  • rows[0][1] 的值是 'mail'
  • rows[0][3] 的值是 '[meɪl]'
既然  数据 正常,为什么显示是一坨黑色或白色的方块儿呢?

原来是在kv文件中,其父容器名字写错了,应该写Label

  1. ImageButton 是一个自定义的类,它结合了 ButtonBehavior 和 Image 类的特性。但是,您尝试在 Kivy 语言(.kv 文件)中直接定义 AnchorLayout 和 ImageButton 的布局,这是不正确的,因为 .kv 文件通常用于定义界面布局,而不是类定义。

  2. ImageButton 自定义类可能需要您自己实现显示文本的逻辑,因为 Image 控件默认不支持文本显示。如果您想要文本和图片同时显示,您可能需要使用其他方法,比如将 Label 和 Image 放在一个布局中,或者使用背景图片和文本属性来模拟一个图像按钮。

  3. 假设您已经有了 ImageButton 类,并且这个类能够显示文本(这通常不是 Image 控件的标准功能,所以您可能需要自定义绘制逻辑),那么 font_name 属性应该被设置在 ImageButton 类的构造函数中或者通过其他方式在 Python 代码中设置,而不是在 .kv 文件中。

  4. ids.phonetic.text = '[meɪl]' 这行代码看起来像是在 Python 代码中设置的,但它不会直接作用在 .kv 文件中定义的界面元素上。您需要在 .kv 文件中为 ImageButton 设置一个属性(比如 text,如果您已经实现了这个属性),或者在 Python 代码中通过引用该按钮的实例来设置它。

  5. 关于黑色方块的问题,这可能是由于 ImageButton 实际上是一个图像控件,并且您没有为它指定任何图像源(source 属性),所以它只显示了一个默认的或空白的图像区域。如果您想要显示文本,您需要使用 Label 或者其他支持文本的控件,并可能将其背景设置为透明或图像。

为了修复这个问题,您应该:

  • 在 Python 代码中定义 ImageButton 类(如果还没有的话),并实现显示文本的逻辑(如果需要的话)。
  • 在 .kv 文件中定义您的界面布局,使用 ImageButton(如果它支持文本)或者其他控件(如 Button 和 Image 的组合)来创建您想要的图像按钮效果。
  • 确保 font_name 和其他相关属性在 Python 代码中或通过 .kv 文件被正确设置。
  • 如果 ImageButton 是一个图像控件,并且您想要显示文本,考虑使用 Label 控件,并可能将其与图像控件结合使用。

如图就显示正常啦。

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

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

相关文章

Django 里html模板

Django 提供两种方式让程序员自定义html模板。 第一种方法 在项目文件夹里的urls.py进行添加 修改代码如下 from django.contrib import admin from django.urls import path from app01 import views # 得添加这行urlpatterns [path(xxx/, views.home), # 添加这行path(…

TXT文本编辑器:一键提取,多关键字匹配,内容尽在掌控!

在浩如烟海的文档中,寻找关键信息往往是一项繁琐而耗时的任务。你是否曾经为了查找某个关键字而翻遍了整个文件夹,却仍然一无所获?现在,有了TXT文本编辑器,这一切都将变得轻松而高效 这款软件以其简洁明了的操作界面和…

最近5星好评的华为的书《常变与长青》

常变与长青 (豆瓣) 作者简介 郭平,1988年加入华为,历任产品开发部项目经理、供应链总经理、总裁办主任、管理工程部总裁、企业发展部总裁、终端公司董事长兼总裁、公司轮值CEO、财经委员会主任、公司副董事长、轮值董事长等职务,现任公…

微信小程序毕业设计-学生知识成果展示与交流系统项目开发实战(附源码+演示视频+LW)

大家好!我是程序猿老A,感谢您阅读本文,欢迎一键三连哦。 💞当前专栏:微信小程序毕业设计 精彩专栏推荐👇🏻👇🏻👇🏻 🎀 Python毕业设计…

Keyshot v11 解锁版安装教程 (3D光线追踪与全域光渲染程序)

前言 keyshot是一款实时渲染模式的软件。实时渲染是目前比较流行的一种渲染方式,优点是快速。调节的材质,灯光修改,光影变化等修改的各种参数结果,所见即所得,意思是你在软件操作界面看到的,就是最终的结果…

绘制t-SNE图

什么是t-SNE图? 如下图,下图来源于论文Contrastive Clustering 一般用于分类问题/对比学习。 作用? 体现出经过层层训练,类内越来越紧密,类间差异越来越大;或者也可以做消融可视化。 怎么画&#xff1f…

vim操作手册

vim分为插入模式、命令模式、底行模式。 插入模式:编辑模式 命令模式:允许使用者通过命令,来进行文本的编辑控制 底行模式:用来进行让vim进行包括但不限于shell进行交互 w:保存 wq&am…

SwiftUI中的Stepper(系统Stepper以及自定义Stepper)

本篇文章主要介绍一下Stepper,这个组件在UIKit中也已经有较长的历史了,下面看看在SwiftUI中如何使用,有哪些更加便捷的方法呢? Stepper减号(-)和加号()按钮,可以点击后以指定的数值进行加减。 基础初始化方法 Stepp…

【动态规划】斐波那契数列模型(C++)

目录 1137.第N个泰波那契数 解法(动态规划) 算法流程 1. 状态表⽰: 2. 状态转移⽅程: 3. 初始化: 4. 填表顺序: 5. 返回值: C算法代码 优化: 滚动数组 测试: …

HP Laptop 15s-fq2xxx,15s-fq2706TU原厂Win11系统镜像下载

惠普星15青春版原装Windows11系统,恢复出厂开箱状态oem预装系统,带恢复重置还原 链接:https://pan.baidu.com/s/1t4Pc-Q0obApLkG8o_9Kkkw?pwdduzj 提取码:duzj 适用型号:15s-fq2xxx,15s-fq2000 15s-f…

ROS2入门21讲__第19讲__Rviz:三维可视化显示平台

目录 前言 Rviz三维可视化平台 Rviz介绍 运行方法 彩色相机仿真与可视化 仿真插件配置 运行仿真环境 图像数据可视化 三维相机仿真与可视化 仿真插件配置 运行仿真环境 点云数据可视化 激光雷达仿真与可视化 仿真插件配置 运行仿真环境 点云数据可视化 Rviz v…

月薪5万是怎样谈的?

知识星球(星球名:芯片制造与封测技术社区,星球号:63559049)里的学员问:目前是晶圆厂的PE,但是想跳槽谈了几次薪水,都没法有大幅度的增长,该怎么办?“学得文武…

联想单机游戏联运SDK接入攻略

1. 接入流程 本文档主要介绍了联想单机游戏SDK接入流程、联想游戏提供的功能等。 1.1. 接入方式 1. 联想单机游戏SDK1.0版本支持“账号防沉迷”接入方式; a. 联想提供账号注册、登录等能力 b. 联想判断账号是否购买游戏,提供游戏支付购买能力 c. 联…

RobotFramework测试框架(13)--内置测试库

Builtln Evaluate方法 Evaluate。它可以做很多事情,主要的作用是可以直接调用Python的方法 一般用Evaluate都是前面放变量接收值,第三列是具体的运算表达式,第四列是要用到的Python的module。这里就是用random来进行一个随机数的生成 Cons…

基础6 探索JAVA图形编程桌面:集合组件详解

我们的团队历经了数不胜数的日夜,全力以赴地进行研发与精心调试,最终成功地推出了一款具有革命性意义的“图形化编程桌面”产品。这款产品的诞生,不仅极为彻底地打破了传统代码开发那长久以来的固有模式,更是把焦点聚集于解决长期…

Redis教程(十五):Redis的哨兵模式搭建

一、搭建Redis一主二从 分别复制三份Redis工作文件夹,里面内容一致 接着修改7002的配置文件,【redis.windows-service.conf】 port 7002 改成 port 7002 slaveof 127.0.0.1 7001 7003也同样修改 port 7003 slaveof 127.0.0.1 7001 这样就指定了700…

浅析FAT32文件系统

本文通过实验测试了FAT文件系统的存储规律,并且探究了部分可能的文件隐藏方法。 实验背景 现有一块硬盘(U盘),其中存在两个分区,分别为FAT32和NTFS文件系统分区。 在FAT分区中存在如下文件: 现需要阅读底…

决策控制类软件项目的团队配置

决策控制类软件项目的团队配置怎样才是最合适的?目的就是实现高效的项目协作以及为企业降本增效。软件项目的主要费用来源是研发人员的开支以及差旅费用。 下面的思维导图从项目与产品的关系、团队架构、项目成员配置、项目可复制性、招聘这几点进行说明如何组织人…

六招搞定,SPA单页面加载速度慢的问题。

众所周知,SPA页面有很多优点,但是首屏加载慢的问题一直被诟病,本文介绍几种解决策略,希望对老铁们有所帮助。 一、SPA页面的独有优势 1. 更快的用户体验: SPA在加载初始页面后,可以在用户与应用程序交互…