首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在kivy中更改按键上的图像和标签

在kivy中更改按键上的图像和标签
EN

Stack Overflow用户
提问于 2015-05-06 20:56:59
回答 1查看 1.8K关注 0票数 2

我现在正在学习在我的树莓派上使用kivy。我安装了最新的kivypie图像,我确实想做一个简单的应用程序,它改变图像内容和按钮和按键上的一些标签。

按钮按下正常,但按下键盘上的uo/down键后,只有标签文本改变,没有图像显示。

此外,我可以退出应用程序按下Q按钮,但不是退出按钮,因为我想。

下面是我当前的代码:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.button import Button
from kivy.uix.label import Label
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.image import Image
from kivy.core.window import Window


class MyApp(App):

    def build(self):
        self._keyboard = Window.request_keyboard(self._keyboard_closed, self)
        self._keyboard.bind(on_key_down=self._on_keyboard_down)

        root = BoxLayout(orientation='vertical')
        self.image = Image(source='test.png',
                       allow_stretch=True,
                       keep_ratio=True)
        root.add_widget(self.image)
        self.label = Label(text='Some long and very explanatory text. This is a representation of a custom image description'
                      ' coming with the image. This text can split over several lines and will fit in a box'
                      'defined by the text_size property.',
                      font_size=28,
                      text_size=(600, None),
                      color=(0, 1, 1, 1),
                      size_hint=(1, .2))
        root.add_widget(self.label)
        button = Button(text="Change",
                    size_hint=(1, .07))
        button.bind(on_press=self.callback)

        root.add_widget(button)

        return root

    def callback(self, value):
        self.image.source = 'test.jpg'
        self.label.text = 'No text'

    def _keyboard_closed(self):
        self._keyboard.unbind(on_key_down=self._on_keyboard_down)
        self._keyboard = None

    def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
        #print('### ----------------------------------- ###')
        #print('The key', keycode, 'have been pressed')
        #print(' - text is %r' % text)
        #print(' - modifiers are %r' % modifiers)

        if text == 'escape':
            App.get_running_app().stop()
            #keyboard.release()
        elif text == 'q':
            App.get_running_app().stop()
            #keyboard.release()
        elif text == 'up':
            self.image.source = 'test.jpg'
            self.label.text = 'No text'
            #keyboard.release()
        elif text == 'down':
            self.image.source = 'test.jpg'
            self.label.text = 'No text'
            #keyboard.release()
        return True


if __name__ == '__main__':
    MyApp().run()
EN

回答 1

Stack Overflow用户

发布于 2015-05-07 17:07:05

如果取消对打印语句的注释,您将看到要查找的信息是keycode格式的,而不是text格式的。text将只匹配字母键,对于特殊键(转义、向上、向下等)则不匹配。尝试将其更改为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def _on_keyboard_down(self, keyboard, keycode, text, modifiers):
    print('### ----------------------------------- ###')
    print('The key', keycode, 'have been pressed')
    print(' - text is %r' % text)
    print(' - modifiers are %r' % modifiers)

    key = keycode[1]
    if key == 'escape':
        App.get_running_app().stop()
        #keyboard.release()
    elif key == 'q':
        App.get_running_app().stop()
        #keyboard.release()
    elif key == 'up':
        self.image.source = 'test2.png'
        self.label.text = 'No text'
        #keyboard.release()
    elif key == 'down':
        self.image.source = 'test2.png'
        self.label.text = 'No text'
        #keyboard.release()
    return True
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30087369

复制
相关文章
Phpstorm配置git版本控制器
Phpstorm中配置git版本控制器:打开PhpStorm,点击File ,Settings ,找到Version Control 找到Git填写Path to Git executable点击Test测试成功就可以了。
OwenZhang
2021/12/08
4260
Phpstorm配置git版本控制器
LQR控制器(控制器的功能是什么)
LQR控制器是常见的最优控制器,它的主要特点是将控制量加入到了成本函数中。 对于线性系统: x ˙ = A x + B u \dot x = Ax+Bu x˙=Ax+Bu 设计控制器 u = − K x u = -Kx u=−Kx使得 J = 1 2 ∫ 0 ∞ x T Q x + u T R u   d t J = \frac{1}{2}\int_0^\infty x^TQx+u^TRu \,dt J=21​∫0∞​xTQx+uTRudt 最小。其中, x T Q x x^TQx xTQx是状态部分, u T R u u^TRu uTRu是控制部分。
全栈程序员站长
2022/08/01
1K0
[CodeIgniter4]-控制器
简而言之,一个控制器就是一个类文件,是以一种能够和 URI 关联在一起的方式来命名的。
landv
2020/03/05
3.6K0
高级性能测试系列《19.循环控制器、foreach控制器和if控制器》
给你一个西瓜,但是不切成多块,切成两半。用个勺子挖着吃,我也不知道吃多少口能把西瓜吃完。
清菡
2022/12/02
2.5K0
高级性能测试系列《19.循环控制器、foreach控制器和if控制器》
为控制器配置日期处理 原
第一步:定义父类 package group.esperanto.action.util; import java.text.SimpleDateFormat; import java.util.Locale; import javax.annotation.Resource; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.context.MessageSourc
南郭先生
2018/08/14
2650
SDRAM控制器设计(8)SDRAM控制器仿真验证
接下来,结合仿真模型(镁光官网提供的 SDRAM 模型)sdr文件,和编写的 testbench 文件验证所设计的控制器是否正确。 testbench如下
全栈程序员站长
2022/09/16
8300
域控制器
强制域控制器计算机帐户向受威胁者控制的主机进行身份验证可能会导致域受损。涉及强制身份验证的最值得注意的技术是使用加密文件系统远程协议 ( MS-EFSR )的PetitPotam攻击。然而,这不是唯一可以用于域升级的协议。意识到可能被滥用的替代协议可能会给红队运营商带来优势,因为蓝队可能没有实施策略来防止各种协议的域升级。
Khan安全团队
2022/01/12
1.2K0
AngularJS 控制器
控制器是 JavaScript 对象,由标准的 JavaScript 对象的构造函数 创建。
陈不成i
2021/07/23
1.2K0
kubernetes | 控制器
基于centos7.9,docker-ce-20.10.18,kubelet-1.22.3-0
Amadeus
2022/10/25
6280
kubernetes | 控制器
Go语言单控制器和多控制器
在Golang的net/http包下有ServeMux实现了Front设计模式的Front窗口,ServeMux负责接收请求并把请求分发给处理器(Handler)
IT工作者
2022/03/30
5280
SDRAM控制器
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/117177.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/06
6320
SDRAM控制器
控制器操作
一.控制器操作 我们首先复习一下基本的控制器定义和方法执行方式。 第一步:控制器默认创建在当前模块下的 Controller 目录下; 第二步:按照指定的命名规则:控制器名(首字母大写)+Controller.class.php; 第三步:控制器里的方法必须是 public 公共的; //控制器 class UserController extends Controller { public function index() { //index()方法在URL访问时可以忽略 } } URL 访问:http://localhost/demo39/User/index/
PM吃瓜
2019/08/13
6470
thikphp 控制器
控制器定义 类名和文件名一样, 渲染输出 渲染输出使用return输出 <?php namespace app\admin\controller; use app\admin\model\User;
mySoul
2019/05/30
6250
swift 获取控制器
得到view的控制器 /** view 获取它的控制器 */ public func viewController()->UIViewController? {
星宇大前端
2019/01/15
1.5K0
UART接口控制器
主设备与从设备通过总线来进行数据通信,是一个数字系统不可或缺的一部分,本篇讲述一种常见的总线控制器UART串行数据接口,也称为串口。 串口的标准一般有,RS-232、RS-422与RS-485标准,我们讲述的是RS-232接口信号。
全栈程序员站长
2022/10/05
6960
UART接口控制器
Sdram控制器(二)
经过几天的Sdram项目调试,小编想说简直了~,感触颇深,今天就分享给大家喽~ Sdram项目调试感悟: 1. 首先保证仿真正确,能够完全读写整个sdram model【难点二】 2. 保证板子上的sdram是正常工作的。 3. 时钟:sdram的输入时钟能在数据中间采样(做相移或者output delay)【难点一】 4. 约束:时序约束和物理约束 5. 其他 复位或者VIO:Debug的时候会感受到这个神奇之处 Oddr2的使用,这里有两个坑: (1)如果输出管脚不是时钟引脚,则需要加CLOCK_D
瓜大三哥
2018/06/11
1.4K0
Sdram控制器(三)
今天学习什么呢? 依然是Sdram控制器有关问题 一、写数据效率 实际带宽与理论带宽 理论带宽 BDrd=CLKrd·WIDTHdata = 166MHz·32bits = 5.312Gbps 实际
瓜大三哥
2018/06/11
8110
Kubernetes ReplicaSet控制器
ReplicaSet的目的是为了维护一组稳定的Pod集合,用来保证给定数量的Pod可用性。
shysh95
2022/10/31
4160
iOS结合导航控制器和标签栏控制器
– (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
全栈程序员站长
2022/07/06
6020
Kubernetes DaemonSet控制器
DaemonSet可以在全部或者某些节点上运行一个Pod的副本,该Pod的副本随着节点的加入被创建,随着节点的删除被回收。
shysh95
2022/10/31
3220

相似问题

从控制器动态启用/禁用输入文本

23

MVC控制器启用禁用控件

10

Spring :配置xml,使控制器根据参数返回视图

31

禁用/配置每个控制器的HoptoadNotifier

11

如何禁用控制器中的输入

23
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文