python怎么自动选择界面上的按钮_我想切换一个真正的按钮,并显示在tkinter图形用户界面上...

让我用一个免责声明作为我的回答的开头——我没有覆盆子派,所以不能用真实的东西来验证这一点。为了进行测试,我使用了一个代理类来模拟随机按下按钮。您可能需要根据GPIO接口的工作速度来调整DELAY值。在

但是,我在靠近顶部的地方放了注释掉的代码,显示了我认为您需要使用的代码。在try:

import Tkinter as tk

import tkFont

except ImportError: # Python 3

import tkinter as tk

import tkinter.font as tkFont

#import RPi.GPIO as GPIO

#

#GPIO.setmode(GPIO.BOARD)

#

#class GPIOButton(object):

# """ Encapsulates GPIO button interface. """

# def __init__(self, pin):

# self.pin = pin

# self.status = 0

# GPIO.setup(pin, GPIO.IN)

#

# def update_status(self):

# self.status = GPIO.input(pin) == GPIO.LOW

### Proxy class since I don't have a Rasperry Pi. ###

import random

class GPIOButton(object):

def __init__(self, pin):

self.pin = pin

self.status = 0

def update_status(self):

if not random.randint(0, 99) % 20: # occassionally toggle status

self.status = not self.status

class App(tk.Frame):

STRIDE = 8

DELAY = 100 # delay in millsecs between button status updates

def __init__(self, gpio_buttons, master=None):

tk.Frame.__init__(self, master)

self.grid()

self.gpio_buttons = gpio_buttons

self.create_widgets()

self.after(self.DELAY, self.update_buttons, self.DELAY) # start updates

def create_widgets(self):

self.btn_font = tkFont.Font(family="Helvetica", size=12, weight='bold')

self.gui_buttons = []

for i, button in enumerate(self.gpio_buttons):

is_pressed = tk.BooleanVar()

is_pressed.set(False)

radiobutton = tk.Radiobutton(self,

text=format(i+1, '02d'),

font=self.btn_font,

value=True,

variable=is_pressed,

relief=tk.RIDGE)

row, col = divmod(i, self.STRIDE)

radiobutton.grid(column=col, row=row)

self.gui_buttons.append(is_pressed)

def update_buttons(self, delay):

for i, gpio_button in enumerate(self.gpio_buttons):

previous_status = gpio_button.status

gpio_button.update_status()

if gpio_button.status != previous_status:

self.gui_buttons[i].set(gpio_button.status)

self.after(delay, self.update_buttons, delay) # rinse and repeat

gpio_buttons = [GPIOButton(pin) for pin in range(16)]

app = App(gpio_buttons)

app.master.title('Rasberry Pi Buttons')

app.mainloop()

下面是在我的Windows计算机上运行的模拟:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值