使用Python和tkinter根据传感器输入输出一行文本

问题描述 投票:0回答:1

[由于害怕问一个愚蠢的问题,并且我知道自己在脑海中,我希望有人会引导我朝正确的方向前进。

我正在从事一个艺术项目,在该项目中,如果将PiTop和接近传感器一起使用,当人们到达传感器一定距离内时,文本就会使用tkinters消息系统进行更改(老实说,只要我可以可以设置一个带有白色文本的黑色窗口,这是我发现它(几乎)起作用的唯一方法)。我意识到这比我预期的要复杂,因此我具备(或显然没有)的基本Python技能不足以让我实现这一目标。无论哪种方式,这都是我编写的基本代码。我已经能够打印文本(并使用数组获取单词以创建我想要的挪威语句子),但是我不了解如何实际运行距离代码的测量,然后以某个人的身份触发新单词以特定距离接近传感器。现在的代码如下所示:

from ptpma.components import PMAUltrasonicSensor, PMALed
from time import sleep
from tkinter import *
import random

ultrasonic_sensor = PMAUltrasonicSensor("D4") #initialize the sensor

#print(ultrasonic_sensor.distance) shows the distance to the sensor
#sleep(0.1)

#random array for the various words
i = ['hensynsfull', 'nyttig','nådig','overbærende','sjenerøs','sympatisk','barmhjertig','altruistisk','anstendig','artig','behagelig','blid','dannet','dydig',
'edel','elskelig','elskverdig','ettergivende','fin','fredelig','fortrolig','fredsommelig','from','føyelig','galant','gemyttlig','god',
'godhjertet','godlynt','hengivende','hjelpsom','hjertelig','hyggelig','høflig','idealistisk','kjærlig','koselig','lun',
'lydig','lyttende','medgjørlig','mild','mottagelig','omsorgsfull','omtenksom','oppmerksom','rolig','skikkelig','spak','stillferdig',
'sømmelig','søt','tam','tillitsfull','varm','velmenende','veloppdragen','velvillig','vennlig','anstrengt','avvikende','flau','irritabel','nervøs',
'opprørt','rastløs','rådvill','selvbevisst','sårbar','urolig','usikker','uvel','angstfull','anspent','barsk','bedrøvet','bekymret',
'brå','engstelig','famlende','feig','forfjamset','forknytt','forlegen','forskrekket','forskremt','foruroliget','fryktsom','hissig','hvileløs',
'livlig','molefonken','motløs','nedstemt','oppjaget','oppspilt','pessimistisk','optimistisk','redd','sint','skremt','sjenert','skvetten',
'sky','spent','stressa','trist','ubesluttsom','usikker','utrygg','utålmodig']
tilfeldig = random.choice(i)
satt_sammen = "Hvorfor"'\n'"er du litt"'\n'+tilfeldig+"?"
#end random choice

#lage vindu i tkinter
master = Tk()

master.geometry("720x1440") #size of window
master.configure(background='black')
w = Message(master, text=satt_sammen)
w.config(anchor=CENTER, justify='center', pady=300, padx=200, bg='black', fg='white', font=('helvetica light', 60))

w.pack()
mainloop()

该程序当前唯一要做的是,每次打开窗口时,它将使用数组中的新单词更新文本。感谢您的投入。我一直在搜索并找到了一些帮助,但是我不太了解如何检查输入(传感器)并因此根据该输入动态更改文本。

python tkinter sensor
1个回答
0
投票

您可以使用master.after(milliseconds, function_name)再次运行该功能,它将检查传感器并更改文本。

我没有传感器,所以我每1000ms(1s)使用随机更改一次文本

#from ptpma.components import PMAUltrasonicSensor, PMALed
import tkinter as tk # PEP8: `import *` is not preferred
import random

# --- functions ---

def update_text():
    #print(ultrasonic_sensor.distance) shows the distance to the sensor
    w['text'] = random.choice(i)
    master.after(1000, update_text) # run it again after 1000ms

# --- main ---

#ultrasonic_sensor = PMAUltrasonicSensor("D4") #initialize the sensor

i = ['hensynsfull', 'nyttig','nådig','overbærende','sjenerøs','sympatisk','barmhjertig','altruistisk','anstendig','artig','behagelig','blid','dannet','dydig',
'edel','elskelig','elskverdig','ettergivende','fin','fredelig','fortrolig','fredsommelig','from','føyelig','galant','gemyttlig','god',
'godhjertet','godlynt','hengivende','hjelpsom','hjertelig','hyggelig','høflig','idealistisk','kjærlig','koselig','lun',
'lydig','lyttende','medgjørlig','mild','mottagelig','omsorgsfull','omtenksom','oppmerksom','rolig','skikkelig','spak','stillferdig',
'sømmelig','søt','tam','tillitsfull','varm','velmenende','veloppdragen','velvillig','vennlig','anstrengt','avvikende','flau','irritabel','nervøs',
'opprørt','rastløs','rådvill','selvbevisst','sårbar','urolig','usikker','uvel','angstfull','anspent','barsk','bedrøvet','bekymret',
'brå','engstelig','famlende','feig','forfjamset','forknytt','forlegen','forskrekket','forskremt','foruroliget','fryktsom','hissig','hvileløs',
'livlig','molefonken','motløs','nedstemt','oppjaget','oppspilt','pessimistisk','optimistisk','redd','sint','skremt','sjenert','skvetten',
'sky','spent','stressa','trist','ubesluttsom','usikker','utrygg','utålmodig']

master = tk.Tk()

master.geometry("720x1440") #size of window
master.configure(background='black')

w = tk.Message(master) # empty string,`update_text()` will set first text

w.config(anchor='center', justify='center', pady=300, padx=200, bg='black', fg='white', font=('helvetica light', 60))
w.pack()

update_text()  # run it first time

master.mainloop()
© www.soinside.com 2019 - 2024. All rights reserved.