Da muss irgend etwas mit dem Copy&Paste nicht funktioniert haben...
Hier noch mal der ganze Code jetzt.
Code: Alles auswählen
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import os
import time
import threading
import board
import neopixel
try:
# for Python2
from Tkinter import * ## notice capitalized T in Tkinter
except ImportError:
# for Python3
from tkinter import * ## notice lowercase 't' in tkinter here
import RPi.GPIO as GPIO
import configparser
path = "/home/myApps/"
config = configparser.ConfigParser()
config.read('%srpiCLS.ini' %path)
ORDER = neopixel.GRB
ledCountGet = config.getint('strip', 'ledcountval')
ledModeGet = config.getint('strip', 'ledMode')
#Variables
appName = "RPi CLS (Custom RGB LED Strip)"
appVersion = "v1.0"
num_pixels = ledCountGet
ledMode = ledModeGet
staticColorR = config.getint('static', 'red')
staticColorG = config.getint('static', 'green')
staticColorB = config.getint('static', 'blue')
pixels = neopixel.NeoPixel(board.D18, num_pixels, brightness=0.2, auto_write=False, pixel_order=ORDER)
def restart_program():
python = sys.executable
os.execl(python, python, * sys.argv)
def mode_off():
global ledMode
ledMode = 0
if(ledMode == 2):
mode_snake_do()
modeOffButton['state'] = NORMAL
modeStaticButton['state'] = NORMAL
modeSnakeButton['state'] = NORMAL
pixels.fill((0, 0, 0))
pixels.show()
def mode_static():
global ledMode
if(ledMode != 1):
ledMode = 1
modeOffButton['state'] = NORMAL
modeStaticButton['state'] = DISABLED
modeSnakeButton['state'] = NORMAL
pixels.fill((int(staticColorR), int(staticColorG), int(staticColorB)))
pixels.show()
def mode_snake_do():
global ledMode
while True:
if(ledMode == 2):
for x in range(0, num_pixels):
pixels[x] = (0, 32, 0)
pixels.show()
time.sleep(0.025)
for x in range(0, num_pixels):
pixels[x] = (0, 0, 0)
pixels.show()
time.sleep(0.025)
continue #Restart while loop
def mode_snake():
global ledMode
ledMode = 2
modeOffButton['state'] = NORMAL
modeStaticButton['state'] = NORMAL
modeSnakeButton['state'] = DISABLED
t = threading.Thread(target=mode_snake_do)
t.start()
def settingsWindow():
def saveConfig():
config.set('strip', 'ledcountval', ledCountSet.get())
config.set('static', 'red', staticColorRVal.get())
config.set('static', 'green', staticColorGVal.get())
config.set('static', 'blue', staticColorBVal.get())
with open('%srpiCLS.ini' %path, 'w') as configfile:
config.write(configfile)
restart_program()
self = Toplevel()
self.title("RPi CLS Settings")
self.minsize(300, 0)
self.geometry("+500+200")
self.resizable(width=False, height=False)
LEDCountGrid = Frame(self)
LEDCountGrid.pack(side=TOP, anchor=W, fill=X, pady=2)
staticColorGrid = Frame(self)
staticColorGrid.pack(side=TOP, anchor=W, fill=X, pady=2)
hrLine2 = Frame(self, bg="gray", height=1)
hrLine2.pack(side=TOP, anchor=W, fill=X, pady=4)
gridBottomSettings = Frame(self)
gridBottomSettings.pack(side=BOTTOM, anchor=W, fill=X)
#LED Settings
LEDCLabel = Label(LEDCountGrid, text="LED Count:").pack(side=LEFT, padx=(5, 5))
ledCountSet = Entry(LEDCountGrid, width=2)
ledCountSet.pack(side=LEFT)
ledCountSet.insert(0, num_pixels)
LEDCLabel2 = Label(LEDCountGrid, text="(1 - 60), 0 = None").pack(side=LEFT, padx=(5, 0))
staticCLabel = Label(staticColorGrid, text="Static Color:").pack(side=LEFT, padx=(5, 5))
staticColorRLabel = Label(staticColorGrid, text="R:").pack(side=LEFT)
staticColorRVal = Entry(staticColorGrid, width=3)
staticColorRVal.pack(side=LEFT)
staticColorRVal.insert(0, staticColorR)
staticColorGLabel = Label(staticColorGrid, text="G:").pack(side=LEFT)
staticColorGVal = Entry(staticColorGrid, width=3)
staticColorGVal.pack(side=LEFT)
staticColorGVal.insert(0, staticColorG)
staticColorBLabel = Label(staticColorGrid, text="B:").pack(side=LEFT)
staticColorBVal = Entry(staticColorGrid, width=3)
staticColorBVal.pack(side=LEFT)
staticColorBVal.insert(0, staticColorB)
staticCLabel2 = Label(staticColorGrid, text="(0 - 255)").pack(side=LEFT, padx=(5, 0))
#Other Settings
closeButton = Button(gridBottomSettings, text="Close", command=self.destroy).pack(side=RIGHT)
saveButton = Button(gridBottomSettings, text="Save", command=saveConfig).pack(side=RIGHT)
#GUI Window
app = Tk()
app.title(appName)
app.minsize(500, 0)
app.geometry("+400+200")
app.resizable(width=False, height=False)
#img = Image("photo", file="rpiCLS_icon.png")
#app.call('wm', 'iconphoto', app._w, img)
#Grids
modesGrid = Frame(app)
modesGrid.pack(side=TOP, anchor=W, fill=X, pady=2)
hrLine = Frame(app, bg="gray", height=1)
hrLine.pack(side=TOP, anchor=W, fill=X, pady=4)
gridBottom = Frame(app)
gridBottom.pack(side=BOTTOM, anchor=W, fill=X)
#Modes & Settings
modeOffLabel = Label(modesGrid, text="Modes:").pack(side=LEFT, padx=(5, 0))
modeOffButton = Button(modesGrid, text="Off", fg="black", borderwidth=2, relief=GROOVE, command=mode_off)
modeOffButton.pack(side=LEFT)
modeStaticButton = Button(modesGrid, text="Static", fg="black", borderwidth=2, relief=GROOVE, command=mode_static)
modeStaticButton.pack(side=LEFT)
modeSnakeButton = Button(modesGrid, text="Snake", fg="black", borderwidth=2, relief=GROOVE, command=mode_snake)
modeSnakeButton.pack(side=LEFT)
#Other Settings
vLabel = Label(gridBottom, text=appVersion, fg="darkgray").pack(side=LEFT)
quitButton = Button(gridBottom, text="Quit", command=quit).pack(side=RIGHT)
settingsButton = Button(gridBottom, text="Settings", command=settingsWindow).pack(side=RIGHT)
app.mainloop()
Ich habe es eben noch ein mal mit der after()-Methode versucht aber da hängt das ganze Programm wieder sobald der Effekt aktiv ist.