Tkinter键绑定不起作用

时间:2016-03-28 15:31:45

标签: python button tkinter

我目前正在为我的滑翔机制作一个小型Projekt。 Tkinter应用程序应该使用RPi自动启动,并打开一个名为XCSOAR的应用程序或只是退出。 它正在使用按钮,但由于我在飞机上没有鼠标,我需要将它绑定到按键。 它已经在Windows上工作了,但不在我的树莓派上。 我猜这是焦点问题?

from Tkinter import *
import os

class MainWindow:

    def __init__(self, master):
        frame = Frame(master)
        master.configure(background="white")
        master.overrideredirect(True)
        master.geometry("{0}x{1}+0+0" .format(root.winfo_screenwidth(), root.winfo_screenheight()))
        master.bind("<Up>", self.xcsoar1)
        master.bind("<Down>", self.startx1)
        frame.pack()

        photo1=PhotoImage(file="XCS.gif")
        self.button1 = Button(frame, image=photo1, command = self.xcsoar, background="white")
        self.button1.image = photo1
        self.button1.pack()

        photo3=PhotoImage(file="center.gif")
        self.center = Label(frame, image = photo3, background="white")
        self.center.image = photo3
        self.center.pack()

        photo2=PhotoImage(file="RPi.gif")
        self.button2 = Button(frame, image=photo2, command = self.startx, background="white")
        self.button2.image=photo2
        self.button2.pack()

    def xcsoar(self):
        os.system('xcsoar.exe')
        root.destroy()
    def startx(self):
        root.destroy()

    def xcsoar1(self, event):
        os.system('xcsoar.exe')
        root.destroy()
    def startx1(self, event):
        root.destroy()

root = Tk()
b = MainWindow(root)
root.mainloop()

任何想法?

2 个答案:

答案 0 :(得分:0)

请阅读MCVEs。该建议不仅适用于发布,还适用于开发和调试。接下来是使用基本键绑定来删除代码的版本。

import tkinter as tk
root = tk.Tk()

def up(event): print('up')
def dn(event): print('dn')

root.bind('<Up>', up)
root.bind('<Key-Down>', dn)
root.mainloop()

当从3.5.1,Win10上的IDLE编辑器运行时,这是有效的。按向上或向下键可打印到IDLE shell。你的电脑怎么样?你的RPi怎么样?

答案 1 :(得分:0)

我遇到了同样的问题,但是我不知道这是否对您有用,但是请尝试在按键绑定之前添加力聚焦

pip install qiskit

我添加#####只是为了标记它在哪里