2017-07-22 5 views
-1

Ich möchte mein Label und Button, wenn jemand einen Knopf drückt, aber ich habe das Problem in meinem Code, dass ich nicht auf die Label-Variable zugreifen kann und dass ich nicht weiß, wie man es vielleicht verstecken arbeitet mit diesem Code ?:Python verstecken Etikett und Knopf nach Ereignis

setStyleSheet("display: none;") 

Und hier ist mein Code, der nicht funktioniert wHE ich die Taste das python-Programm drücken nein sagen respond

import sys 
    from PyQt5.QtCore import * 
    from PyQt5.QtGui import * 
    from PyQt5.QtWidgets import * 
    from PyQt5 import QtCore 
    from PyQt5 import QtGui 
    from PyQt5 import QtWidgets 

    class WindowInhalt(QWidget): 
     def label(self): 
      label1 = QtWidgets.QLabel(self) 
      label1.setText("Überschrift mit namen des text adventure") 
      label1.setStyleSheet("font-size: 18px;color: black;") 
      label1.setGeometry(50, 50, 400, 100) 
      label1.move(350, 50) 

      label2 = QtWidgets.QLabel(self) 
      label2.setText("Spielen") 
      label2.setStyleSheet("font-size: 18px;color: black;") 
      label2.setGeometry(50, 50, 400, 100) 
      label2.move(450, 120) 
      label2.mousePressEvent = self.spielen 

      label3 = QtWidgets.QLabel(self) 
      label3.setText("Settings") 
      label3.setStyleSheet("font-size: 18px;color: black;") 
      label3.setGeometry(50, 50, 400, 100) 
      label3.move(450, 200) 
      label3.mousePressEvent = self.settings 

      label4 = QtWidgets.QLabel(self) 
      label4.setText("Credits") 
      label4.setStyleSheet("font-size: 18px;color: black;") 
      label4.setGeometry(50, 50, 400, 100) 
      label4.move(450, 280) 
      label4.mousePressEvent = self.credits 

     def Button(self): 
      QToolTip.setFont(QFont("Arial", 10)) 
      button = QPushButton("Spiel beenden", self) 
      button.setGeometry(50, 50, 150, 50) 
      button.setFont(QFont("Arial", 12)) 
      button.move(820, 420) 
      button.setToolTip("<b>Button lel</b>") 
      button.clicked.connect(QtCore.QCoreApplication.instance().quit) 
      button.clicked.connect(self.gedruekt) 
      button.setStyleSheet("background-color: white;") 


    class Window(WindowInhalt): 
     def __init__(self): 
      super().__init__() 
      self.initMe() 

     def initMe(self): 
      WindowInhalt.Button(self) 
      WindowInhalt.label(self) 
      self.setGeometry(50,50,1000,500) 
      self.setWindowTitle("Gui lalal einhorn") 
      self.setWindowIcon(QIcon("cookie.png")) 
      self.setAutoFillBackground(True) 
      self.setStyleSheet("background-color: lightblue;") 
      self.move(500, 250) 
      self.show() 

     def spielen(self, event,): 
      print("spielen") 
      WindowInhalt.label.label2.setStyleSheet("display:none;") 
#here i want to hide the label 


     def settings(self, event): 
      print("settings") 

     def credits(self, event): 
      print("credits") 

     def gedruekt(self, event): 
      print("Er hats getan ;(") 

    if __name__ == "__main__": 
     app = QApplication(sys.argv) 
     w = Window() 
     sys.exit(app.exec_()) 
    else: 
     print("Gui not created, because script used at liabary") 

vielleicht somone mir helfen kann.

EDIT1: , wenn ich es tun so

def spielen(self, event,): 
     print("spielen") 
     self.label1 = QtWidgets.QLabel(self) 
     self.label1.hide() 

als ich in der Konsole die Meldung spielen, aber das Label ist immer noch da , wenn ich es tun so:

def spielen(self, event,): 
    print("spielen") 
    self.label1.hide() 

als das Programm crasht

EDIT2: Für alle, die über dem richtigen Code instredtef ist ihr, er ist:

import sys 
from PyQt5.QtCore import * 
from PyQt5.QtGui import * 
from PyQt5.QtWidgets import * 
from PyQt5 import QtCore 
from PyQt5 import QtGui 
from PyQt5 import QtWidgets 

class WindowInhalt(QWidget): 
    def label(self): 
     self.label1 = QtWidgets.QLabel(self) 
     self.label1.setText("Überschrift mit namen des text adventure") 
     self.label1.setStyleSheet("font-size: 18px;color: black;") 
     self.label1.setGeometry(50, 50, 400, 100) 
     self.label1.move(350, 50) 
     self.label1.show() 

     self.label2 = QtWidgets.QLabel(self) 
     self.label2.setText("Spielen") 
     self.label2.setStyleSheet("font-size: 18px;color: black;") 
     self.label2.setGeometry(50, 50, 400, 100) 
     self.label2.move(450, 120) 
     self.label2.mousePressEvent = self.spielen 
     self.label2.show() 

     self.label3 = QtWidgets.QLabel(self) 
     self.label3.setText("Settings") 
     self.label3.setStyleSheet("font-size: 18px;color: black;") 
     self.label3.setGeometry(50, 50, 400, 100) 
     self.label3.move(450, 200) 
     self.label3.mousePressEvent = self.settings 
     self.label3.show() 

     self.label4 = QtWidgets.QLabel(self) 
     self.label4.setText("Credits") 
     self.label4.setStyleSheet("font-size: 18px;color: black;") 
     self.label4.setGeometry(50, 50, 400, 100) 
     self.label4.move(450, 280) 
     self.label4.mousePressEvent = self.credits 
     self.label4.show() 

    def button(self): 
     QToolTip.setFont(QFont("Arial", 10)) 
     self.button = QPushButton("Spiel beenden", self) 
     self.button.setGeometry(50, 50, 150, 50) 
     self.button.setFont(QFont("Arial", 12)) 
     self.button.move(820, 420) 
     self.button.setToolTip("<b>Button lel</b>") 
     self.button.clicked.connect(QtCore.QCoreApplication.instance().quit) 
     self.button.clicked.connect(self.gedruekt) 
     self.button.setStyleSheet("background-color: white;") 
     self.button.show() 


class Window(WindowInhalt): 
    def __init__(self): 
     super().__init__() 
     self.initMe() 

    def initMe(self): 
     self.label() 
     self.button() 
     self.setGeometry(50,50,1000,500) 
     self.setWindowTitle("Gui lalal einhorn") 
     self.setWindowIcon(QIcon("cookie.png")) 
     self.setAutoFillBackground(True) 
     self.setStyleSheet("background-color: lightblue;") 
     self.move(500, 250) 
     self.show() 

    def spielen(self, event,): 
     print("spielen") 
     self.label1.hide() 

    def settings(self, event): 
     print("settings") 

    def credits(self, event): 
     print("credits") 

    def gedruekt(self, event): 
     print("Er hats getan ;(") 

if __name__ == "__main__": 
    app = QApplication(sys.argv) 
    w = Window() 
    sys.exit(app.exec_()) 
else: 
    print("Gui not created, because script used at liabary") 

Antwort

0

Wenn Sie auf ein Objekt beziehen möchten Sie in einer Klasse erstellt haben, müssen Sie es als ein Attribut dieser Klasse deklarieren, mit self.labelX:

self.label1 = QtWidgets.QLabel(self) 

Dann in jeder Methode dieser Klasse, dieses Attribut einfach anrufen:

self.label1.hide() 

oder anderswo in th e Code

window_inhalt_instance.label1.hide() 

EDIT: ich darauf konzentriert, wie Sie die Klasse sind instanziiert wird, müssen Sie auch hier einige Teile ändern:

Die Etiketten werden nicht versteckt, weil sie erstellt werden mit WindowInhalt.label(self)

Wie Klasse Fenster von WindowInhalt erbt, können Sie direkt

012 genannt

Aber Sie müssen alle Etiketten Erklärung in WindowInhalt ändern, indem Sie selbst Hinzufügen

+0

okay, ich es versuchen danke – Yuto

+0

ja jetzt funktioniert es vielen Dank, ich bin noch ein Anfänger – Yuto

+0

@Yuto Kein Problem, man denke nur an Wenn Sie eine Klasse erstellen, ist es ein Modell, um ein Objekt zu erstellen. Verwenden Sie dieses Modell nicht direkt als 'WindowInhalt.label (self)', sondern erstellen Sie stattdessen eine Instanz, wie Sie es mit 'w = Window()' getan haben. – PRMoureu