Ich habe eine aktive Klasse. Das läuft die Login-Seite. Ich klicke auf eine Schaltfläche, um ein QWidget aufzurufen, das ich für eine Bildschirmtastatur programmiert habe. Und ich habe zu dem Teil, wo alles was ich damit zu tun habe, den aktuellen Text aus einem QLineEdit herausholt und diesen Text entsprechend der Taste, die auf der Tastatur gedrückt wurde, aktualisiert. Die Tastatur ist eine separate Klasse, und ich habe eine Funktion innerhalb meiner LoginPage, die den Text aus dem QLineEdit holen sollte, aber wenn ich versuche, diese Funktion von einer anderen Klasse auszuführen, bekomme ich einen Fehler: TypeError: 'bool' Objekt ist nicht aufrufbarPython: Funktion von einer aktiven Klasse aufrufen
Jetzt kann ich davon ausgehen, dass dieser Fehler ist, weil die Klasse aktiv ist, und um die Funktion innerhalb dieser Klasse von einer anderen Klasse aufzurufen, muss die Klasse erneut aufgerufen werden, was nicht möglich ist, wenn es bereits ist aktiv. Wie also würde ich diese Funktion von einer anderen Klasse aufrufen, während die Funktion in einer aktiven Klasse ist. Oder gibt es eine andere Lösung?
Ja meine Tastatur ist nicht wirklich Teil des aktuellen Fensters, es läuft separat, so dass es über das Programm
SomeCode universal ist: (entfernt Irrelevant Code wie Layout und Formatierung): Ignoriere Vertiefung Fehler als auch
class Login(QtGui.QWidget):
clicked =QtCore.pyqtSignal() #Signal emitter
def __init__(self, parent=None): #Constructor
super(Login, self).__init__()
self.initUI()
def initUI(self):
self.EFilter = Filter()
TitleFont = QtGui.QFont()
SubFont = QtGui.QFont()
Title = QtGui.QLabel("SECRET ;)")
LoginL = QtGui.QLabel("Username")
PassL = QtGui.QLabel("Password")
self.LoginE = QtGui.QLineEdit()
self.LoginE.setObjectName("LoginE")
self.LoginE.installEventFilter(self.EFilter)
self.PassE = QtGui.QLineEdit()
self.PassE.setObjectName("PassE")
self.PassE.installEventFilter(self.EFilter)
LoginB = QtGui.QPushButton("Login")
Keyboard = QtGui.QPushButton("Keyboard")
Keyboard.clicked.connect(self.KeyCall)
self.setLayout(NewLayout)
LoginB.clicked.connect(self.LoginRoutine)
def LoginRoutine(self):
User = self.LoginE.text()
Pass = self.PassE.text()
if User == "Admin":
self.parent().parent().AdminSet()
self.LoginE.clear()
self.PassE.clear()
def KeyCall(self):
self.Key = Keyboard(self)
def GiveText(self, widget):
Var = eval("self."+widget+".text()")
return Var
class Keyboard(QtGui.QWidget):
clicked = QtCore.pyqtSignal()
def __init__(self, parent):
super(Keyboard, self).__init__()
self.initUI()
def initUI(self):
#Removed All Buttons, just pointless things not needed to see
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint)
self.setFocusPolicy(QtCore.Qt.NoFocus)
self.setFixedSize(750, 250)
self.setWindowTitle("Keyboard")
self.show()
def Capitalise(self):
#This just capitalises buttons nothing relevent here
#self.Capital also comes from here
def Clicked(self):
self.Counter = 0
self.Name = Store(self)
self.Found = False
Login = self.LoginCheck()
if Login == True:
if self.Capital == True:
Char = str(self.sender().text())
#Important Thing: THIS WHERE ERROR IS ;)
OldText = Login().GetText(str(self.Name))
print (OldText) #JUST CHECKING IF IT WORKS WHEN ITS CALLED
#More Irrelevant stuff gone
def LoginCheck(self):
#Boring algorithm stuff to check whether the variable is in this class
def AdminCheck(self):
#Boring algorithm stuff to check whether the variable is in this class
class Filter(QtCore.QObject):
#Typical event filter nothing special
class Store(Filter):
#More boring alogrithm stuff for transfering data between classes
Full Error:
Traceback (most recent call last):
File "Blahblahblah", line 952, in Clicked
OldText = Login().GetText(str(self.Name))
TypeError: 'bool' object is not callable
Jede Hilfe wäre sehr geschätzt! Danke
Hinweise: GetAttr Methode nicht entweder
Got it!Ich weiß nicht, wie ich das nicht gesehen habe, Danke, auch ich hatte immer die Angewohnheit, Großbuchstaben zu benutzen und ich dachte, ich sollte es sowieso nicht tun, also sprach ich mit meinen Computerlehrern darüber, aber sie sagten, es sei nicht Es ist egal, es sei denn, es stört die Sprache. –