Kann man einen von mehreren tableView gezielt sperren?

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Ich habe in meiner Applikation insgesamt vier Tabellen, die über Tabs angewählt werden. Eine dieser Tabellen darf nur nach Eingabe eines Passwortes eingesehen werden.
Irgendwie will es mir nicht gelingen eine bestimmtes TAB zu dis- bzw. enablen.

Kann mir jemand auf die Sprünge helfen?
Ich benutze PyQt4 Version 4.4.4
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
franzf
User
Beiträge: 78
Registriert: Samstag 29. August 2009, 10:21

Code: Alles auswählen

tabWidget.setTabEnabled(index, False)
Oder meintest du was anderes?
Wenn du den index nicht kennst kannst du ihn mittels

Code: Alles auswählen

tabWidget.indexOf(widget)
finden.

Was verwendest du denn als Doku, wenn ich fragen darf? :D
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Hi franzf,
danke für Deinen Tip, der auf Anhieb leider nicht funktioniert hat.
Es wäre gut, wenn Du Quellen angeben würdest, damit ich nachlesen kann. Schließlich möchte ich immer dazu lernen. :wink:

Ich hab jetzt das Problem anders gelöst. Mit der Passworteingabe beim Start wird eine Bool-Variable gesetzt, die ich beim Aufbau der Tabellen abfrage. Nur wenn das Administrator PW eingegeben wurde, wird für die vierte Tabelle das Tab mit Text gesetzt, sodass die Tabelle eingesehen und verändert werden kann. Soll die Berechtigung geändert werden, muss halt neu gestartet werden.
Das reicht mir im Moment. Wenn Du mir noch mitteilen könntest, wo ich die von Dir vorgeschlagene Lösung in der Dolu finde, wäre ich Dir dankbar.
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
franzf
User
Beiträge: 78
Registriert: Samstag 29. August 2009, 10:21

klaus66 hat geschrieben:danke für Deinen Tip, der auf Anhieb leider nicht funktioniert hat.
Es wäre gut, wenn Du Quellen angeben würdest, damit ich nachlesen kann. Schließlich möchte ich immer dazu lernen. :wink:
Na hier:
http://doc.trolltech.com/4.4/qtabwidget ... TabEnabled

Und PyQt4-4.5 (ich hab nachgeschaut, das ist genauso schon in 4.4 und sogar schon in 4.2 vorhanden):
http://www.riverbankcomputing.com/stati ... TabEnabled

Zeig deinen Code, dann wissen wir was falsch läuft (und bitte genaue Fehlermeldungen bzw. erwartetes und beobachtetes Verhalten). Steht eigentlich was in der Console?
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Hallo franzf,
ich hab mich noch mal schlau gemacht und etwas experimentiert.

Code: Alles auswählen

        tab4.setEnabled(Admin)
tab4 ist das Tabellen Widget und Admin ist True wenn das Administrator Passwort eingegeben wurde.

Dein Tip funktioniert schon, allerdings wird die betreffendeTabelle noch mit reduzierter Stärke angezeigt und die Eingabe in die Tabelle ist gesperrt.
Ich brauch das Sperren der Auswahl der betreffenden Tabelle, so dass sie weder angezeigt noch bedient werden kann. Der Grund hierfür ist der Schutz der Kalkulationsdaten, die nur die berechtigte Person (Admin) einsehen und verändern können soll.
Hast Du eine Idee, wie man das Auswahl-Tab einer Tabelle sperren kann?

Mir ist dazu nur diese Lösung eingefallen:

Code: Alles auswählen

        if Admin:
            self.AuftragTabelle.addTab(tab4, self.tr("Preise"))
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
franzf
User
Beiträge: 78
Registriert: Samstag 29. August 2009, 10:21

Lies dir das doch GENAUER durch, was man dir schreibt.
nicht setEnabled sondern setTabEnabled!
Ist ne Methode von QTabWidget.

Einfach ein Beispiel, dass du es siehst wie es geht:

Code: Alles auswählen

from PyQt4.Qt import *
import sys

app = QApplication(sys.argv)
tab = QTabWidget()
tab.addTab(QLabel("Tab 1", tab), "Tab 1")
tab.addTab(QLabel("Tab 2", tab), "Tab 2")
tab.addTab(QLabel("Tab 3", tab), "Tab 3")

tab.setTabEnabled(1, False) # HIER HIER HIER

tab.show()
app.exec_()
Benutzeravatar
klaus66
User
Beiträge: 51
Registriert: Mittwoch 11. März 2009, 09:26
Wohnort: Bergisch Gladbach-Bensberg

Sorry, das was ich kopiert hatte war das, was ich zum Laufen gebracht hatte. Mit dem Statement "setTabEnabled" bekam ich immer eine Fehlermeldung. Inzwischen weiß ich auch warum.

Code: Alles auswählen

        self.AuftragTabelle.addTab(tab1, self.tr("Auftrag"))
        self.AuftragTabelle.addTab(tab2, self.tr("Bestellen"))
        self.AuftragTabelle.addTab(tab3, self.tr("Lieferanten"))
        self.AuftragTabelle.addTab(tab4, self.tr("Preise"))
        self.AuftragTabelle.setTabEnabled(3, Admin)
So sieht es jetzt aus und funktioniert auch, wie es sollte. Mein Fehler war, dass ich in der letzten zeile nicht das QTabWidget "AuftragTabelle" sondern das QWidget (die Tabelle) "tab4" angegeben hatte.
Ganz schön blöd!

Danke für Deine Hilfe.
Mit freundlichem Gruß Klaus

Das Geheimnis des Könnens liegt im Wollen!
Ubuntu 9.10 64Bit, AMD Athlon 64/Opteron 3200+, 1GB RAM, NVIDIA GeForce7, 250GB SATA 80GB USB und Asus Eee PC 4G mit Ubuntu-eee-8.04.1\\
Antworten