Probleme beim Schließen eines GTK Windows.
Verfasst: Mittwoch 2. Oktober 2019, 06:57
Hallo,
zuerst möchte ich mich bei euch kurz vorstellen, weil ich nur durch mein aktuelles Problem auf dieses Forum gestoßen bin. Ich bin Steffen, 17 Jahre alt und bun aktuell in meinem letzten Schuljahr. Ab dem nächsten Jahr werde ich dann ein Duales Studium der Wirtschaftsinformatik aufnehmen.
Aktuell habe ich nun folgendes Problem bei der Programmierung für das UserInterface für unseren Teamstand bei einem Schulwettbewerb.
Ich versuche bei einer Veränderung der NFC Karte, die mit einem PN532 reader festgestellt wird, ein mit glade erstelltes GTK Window zu schließen und ein anderes zu öffnen.
Dabei bekomme ich folgende Fehlermeldung:
Dass die globalen Variablen lieber als Instanzattribute geschrieben werden sollten ist mir auch klar und wird sofort heute Nachmittag verändert.
Habt ihr eine Idee wo das andere Problem liegt?
Vielen Dank schonmal für die Hilfe.
LG
Steffen
zuerst möchte ich mich bei euch kurz vorstellen, weil ich nur durch mein aktuelles Problem auf dieses Forum gestoßen bin. Ich bin Steffen, 17 Jahre alt und bun aktuell in meinem letzten Schuljahr. Ab dem nächsten Jahr werde ich dann ein Duales Studium der Wirtschaftsinformatik aufnehmen.
Aktuell habe ich nun folgendes Problem bei der Programmierung für das UserInterface für unseren Teamstand bei einem Schulwettbewerb.
Ich versuche bei einer Veränderung der NFC Karte, die mit einem PN532 reader festgestellt wird, ein mit glade erstelltes GTK Window zu schließen und ein anderes zu öffnen.
Dabei bekomme ich folgende Fehlermeldung:
So sieht das aktuelle Programm aus:Traceback (most recent call last): File "sensorUI.py", line 53, in sensorabfrage self.changewindow(part="hauptmenue") File "sensorUI.py", line 38, in changewindow window.destroy() UnboundLocalError: local variable 'window' referenced before assignment
Code: Alles auswählen
from datetime import datetime
import time
import binascii
import socket
import signal
import sys
import Adafruit_PN532 as PN532
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, GObject
# Pins NFC Modul
CS = 18
MOSI = 23
MISO = 24
SCLK = 25
# Karten fuer NFC definieren
karten = {
"hauptmenue": "hauptmenue",
"112": "finalrs",
"111": "v1"
}
letzter_tag = ""
startup = 1
class MainWindow(Gtk.Window):
def __init__(self, sensor):
global letzter_tag
self.pn532 = sensor
letzter_tag = "hauptmenue"
self.changewindow(part="hauptmenue")
def changewindow(self, part):
global startup
if startup is not 1:
window.destroy()
else:
startup = 0
builder = Gtk.Builder()
builder.add_from_file("/home/pi/Desktop/InterfacesRS/{0}.glade".format(part))
window = builder.get_object("window1")
window.show_all()
print("window changed")
def sensorabfrage(self):
global letzter_tag
uid = self.pn532.read_passive_target()
if uid is None:
if letzter_tag is not "hauptmenue":
letzter_tag = "hauptmenue"
print("Kein Tag in Reichweite!")
self.changewindow(part="hauptmenue")
data = self.pn532.mifare_classic_read_block(4)
if data is not None:
action = str(int(data[2:8].decode("utf-8"), 16))
objekt = karten.get(action)
if objekt is not None:
if objekt != letzter_tag:
letzter_tag = objekt
print(objekt)
self.changewindow(part=objekt)
return True
def startsensortimer(self):
GObject.timeout_add(400, self.sensorabfrage)
def main():
pn532 = PN532.PN532(cs=CS, sclk=SCLK, mosi=MOSI, miso=MISO)
pn532.begin()
pn532.SAM_configuration()
win = MainWindow(sensor=pn532)
win.startsensortimer()
Gtk.main()
if __name__ == "__main__":
main()
Habt ihr eine Idee wo das andere Problem liegt?
Vielen Dank schonmal für die Hilfe.
LG
Steffen