Pqt5 Designer einbindung und steuerung GPIO

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
steffendesol
User
Beiträge: 3
Registriert: Sonntag 24. Januar 2021, 03:37

Hallo liebes Forum,
Ich bin ein kompletter Neuling auf dem Thema Programmierung und rasp. Nun stehe ich aber 2 Tage vor meiner Abschlussprüfung für meinen Maschienenbautechniker. Ich hätte mir ein anderes Thema gewählt, doch liebe ich Herausforderungen. Nun zu meinem Problem (Ich hoffe ihr könnt mir helfen):




Ich habe mit Pqt5 Designer eine Gui erstellt, welche im Programm meine Relais über GPIO schalten soll. Nun ist es aber so, dass sobald ich das Programm schalte alle Relais angezogen werden und mit betätigen des PUSHBOTTONS diese weder aus noch eingeschaltet werden können. Ein LED Streifen sollte dazu geschaltet werden, wobei ich bei dem Vorhaben schon verzweifel.

Ich habe schon viel in Büchern gelesen aber finde ich den Fehler nicht?! Vllt gehe ich auch komplett falsch an die Sache ran.

Bitte helft mir dabei!!!!





Liebe Grüße
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ohne Code wird’s schwer dir zu helfen.
steffendesol
User
Beiträge: 3
Registriert: Sonntag 24. Januar 2021, 03:37

import sys
from PyQt5.QtCore import pyqtSlot
from PyQt5.QtWidgets import QApplication,QDialog,QPushButton
from PyQt5.uic import loadUi
import RPi.GPIO as gpio

KB=26
MW=19
OA=13
OW=21

gpio.setmode(gpio.BCM)
gpio.setwarnings(False)

gpio.setup(26,gpio.OUT)
gpio.setup(19,gpio.OUT)
gpio.setup(13,gpio.OUT)
gpio.setup(21,gpio.OUT)

class design(QDialog):
def __init__(self):
super(design,self).__init__()
loadUi('design.ui',self)
self.setWindowTitle('Saftbar')
self.KB.clicked.connect(self.KB)
self.MW.clicked.connect(self.MW)
self.OA.clicked.connect(self.OA)
self.OW.clicked.connect(self.OW)

@pyqtSlot()
def KB(self):
if gpio.input(KB):
gpio.output(KB,gpio.LOW)
self.KB.setText('KB in progress')
else:
gpio.output(KB,gpio.HIGH)
self.KB.setText('KB')

def MW(self):
if gpio.input(MW):
gpio.output(MW,gpio.LOW)
self.MW.setText('MW in progress')
else:
gpio.output(MW,gpio.HIGH)
self.MW.setText('MW')

def OA(self):
if gpio.input(OA):
gpio.output(OA,gpio.LOW)
self.OA.setText('OA in progress')
else:
gpio.output(OA,gpio.HIGH)
self.OA.setText('OA')

def OW(self):
if gpio.input(OW):
gpio.output(OW,gpio.LOW)
self.OW.setText('OW in progress')
else:
gpio.output(OW,gpio.HIGH)
self.OW.setText('OW')

app=QApplication(sys.argv)
widget=loadUi('design.ui')
widget.show()
sys.exit(app.exec_())
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Benutze sprechende Variablennamen. Sowohl eine Methode als auch einen Button KW zu nennen, klappt nicht. Der Pin heißt auch KW ist aber zum Glück in einem anderen Namensraum.
Gute Namen verhindern schon mal solche Kollisionen.
steffendesol
User
Beiträge: 3
Registriert: Sonntag 24. Januar 2021, 03:37

Danke für die Antwort: Also verstehe ich das richtig, wenn ich die Variablen ab a hochzähle ich auf der sicheren Seite wäre? Habe das jetzt geändert, habe aber immernoch das gleiche Problem.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Sprechende Variablen sind etwas anderes als hochzählen. wodka_pin, wodka_button, wodka_callback sind sprechende Variablen.

Und “ich habe etwas geändert, aber es geht nicht” - was genau soll man damit anfangen? Zeige konkreten Code, in Code Tags, und konkrete Fehlermeldung und beschreibe, was passiert und nicht passiert.
Antworten