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

2024-06-28 10:04:34 发布

您现在位置:Python中文网/ 问答频道 /正文

由于害怕问一个愚蠢的问题,并且知道我已经陷入困境,我希望有人能把我带向正确的方向

我正在做一个艺术项目,在这个项目中,当人们在距离传感器一定距离内时,使用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()

该程序目前所做的唯一一件事是,每次我打开窗口时,它都会用数组中的一个新词更新文本。我感谢你的任何意见。我已经搜索并找到了一些帮助,但我真的不明白如何检查输入(传感器),从而根据输入动态更改文本


这就是我们目前所处的位置:

from ptpma.components import PMAUltrasonicSensor, PMALed
import tkinter as tk # PEP8: `import *` is not preferred
import random
ultrasonic_sensor = PMAUltrasonicSensor("D4") #initialize the sensor

# --- functions ---



def update_text():
    print(ultrasonic_sensor.distance) 
    if ultrasonic_sensor.distance < 40:
        w['text'] = random.choice(i)+"?"

    else:
        w['text'] = ""        

    master.after(5000, update_text) # run it again after 1000ms




def print_distance():
    print(ultrasonic_sensor.distance)
    master.after(40, print_distance)





# --- main ---



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+"?"

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
x = tk.Message(master)

update_text() 
w.config(width=720, pady=50, padx=20, bg='black', fg='white', font=('helvetica light', 60))
x.config(width=720, anchor='center', justify='center', bg='black', fg='white', font=('helvetica light', 60), text="Hvorfor er du litt")

x.pack()


w.pack()

print_distance()
#create_sentence()

master.mainloop()

现在发生的情况是,每当有人在距离传感器40的地方走到传感器前面时,变量就会变为一个特定的单词,并在屏幕上显示一定的时间。之后,如果没有人在前面,它就会变成空白。 我的问题是,我想要以下内容,但无法使其发挥作用:

伪码:如果有人在传感器前面一定距离处,立即从阵列中设置单词。只要有人在前面,就将该词保留在那里,当传感器不再在前面注册一个人时(本例中传感器值大于40),将该词保留一秒钟,然后变为空白。冷却5秒钟,然后重复该功能

他们现在是这样的,如果有人只是站在传感器前面,它会不断添加一个新词,破坏我试图制作的“为什么机器”的“目的”

如果有人对此有任何意见,那就太好了

另外-从顶部向下移动两个孩子会很棒,但我似乎不能使用pady(x,x)值仅从顶部向下移动,而不能将底部和顶部一起填充

对不起,如果这是一个很大的要求,但感谢迄今为止的帮助


Tags: thetextfrom文本importmaster距离random
1条回答
网友
1楼 · 发布于 2024-06-28 10:04:34

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

我没有传感器,所以我每1000毫秒(1秒)使用随机更改文本

#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()

相关问题 更多 >