Siebensegment; TypeError: 'str' object is not callable
Verfasst: Freitag 24. Mai 2019, 13:30
Hallo, irgendetwas funktionier mit der Devinition date oder 'date(seg)' nicht
dies ist ein Shell scriptt dür eine Sieben Segmentanzeige
Wenn ich das Script starte und
'date' eingebe komm ich in die 'If schleife date'
anstatt das 'date(seg)' startet bekomme ich diese Fehlermeldung
dies ist ein Shell scriptt dür eine Sieben Segmentanzeige
Code: Alles auswählen
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Copyright (c) 2017-18 Richard Hull and contributors
# See LICENSE.rst for details.
import time
from datetime import datetime
from luma.led_matrix.device import max7219
from luma.core.interface.serial import spi, noop
from luma.core.virtual import viewport, sevensegment
def date(seg):
now = datetime.now()
seg.text = now.strftime("%y-%m-%d")
def clock(seg, seconds):
interval = 0.5
for i in range(int(seconds / interval)):
now = datetime.now()
seg.text = now.strftime("%H-%M-%S")
if i % 2 == 0:
seg.text = now.strftime("%H-%M-%S")
else:
seg.text = now.strftime("%H %M %S")
time.sleep(interval)
def show_message_vp(device, msg, delay=0.1):
# Implemented with virtual viewport
width = device.width
padding = " " * width
msg = padding + msg + padding
n = len(msg)
virtual = viewport(device, width=n, height=8)
sevensegment(virtual).text = msg
for i in reversed(list(range(n - width))):
virtual.set_position((i, 0))
time.sleep(delay)
def show_message_alt(seg, msg, delay=0.1):
width = seg.device.width
padding = " " * width
msg = padding + msg + padding
for i in range(len(msg)):
seg.text = msg[i:i + width]
time.sleep(delay)
def main():
serial = spi(port=0, device=0, gpio=noop())
device = max7219(serial, cascaded=1)
seg = sevensegment(device)
time = 'time'
date = 'date'
scroll = 'scroll'
exit = 'exit'
display = 'display'
Display = 'Display'
while True:
print ("")
print("time = Uhrzeit")
print("date = Datum")
print("scroll = Scrolling-Text")
print("display = Displaying-TExt")
print("exit = Exit")
print("")
Input = raw_input("What will you do? ")
if Input == time:
print ("")
print ("Uhrzeit für 60 Sekunden aktiviert")
clock(seg, seconds=60)
seg.text = ""
elif Input == date:
print ("")
print ("Datum für 60 Sekunden aktiviert")
date(seg)
time.sleep(60)
seg.text = ""
elif Input == scroll:
print("")
Scroll = raw_input("What should scroll? ")
print ("Scrolling "+Scroll+" ")
show_message_alt(seg,""+Scroll+"")
# print ("Scrolling "+Scroll+" ")
elif Input == display:
print ("")
print ("Maximal 8 Buchstaben / Zeichen")
Display = raw_input("What should display? ")
print ("Displaying "+Display+" for 10 Sekonds ")
seg.text = (" "+Display+" ")
time.sleep(10)
seg.text = ""
elif Input == exit:
seg.text = (" ")
break
else:
print ("Unkown command / For Exit 'exit' or 'Ctrl + C'")
if __name__ == '__main__':
main()
Wenn ich das Script starte und
'date' eingebe komm ich in die 'If schleife date'
anstatt das 'date(seg)' startet bekomme ich diese Fehlermeldung
Code: Alles auswählen
What will you do? date
Datum für 60 Sekunden aktiviert
Traceback (most recent call last):
File "All.py", line 116, in <module>
main()
File "All.py", line 88, in main
date(seg)
TypeError: 'str' object is not callable