2017-07-22 78 views
-1

我想隐藏我的标签和按钮,当有人按下按钮,但我有我的代码中的问题,我不能访问标签变量,我不知道如何隐藏也许它与此代码?:Python隐藏标签和事件按钮

setStyleSheet("display: none;") 

这里工作是我的代码,不工作我磨片按下按钮蟒蛇PROGRAMM说不回应

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") 

也许有人为能帮助我。

EDIT1: 当我做,所以

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

比我得到的控制台消息spielen但标签仍然存在 当我愿意这样做:

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

比程序崩溃

EDIT2: 对于任何人谁是正确的代码上面instredtef她,他是:

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") 

回答

0

如果你想引用你已经在类中创建对象时,你需要将其声明为这个类的一个属性,与self.labelX

self.label1 = QtWidgets.QLabel(self) 

然后在这个类中的任何方法,你可以方便地调用这个属性:

self.label1.hide() 

或其他地方的日E码

window_inhalt_instance.label1.hide() 

编辑: 我专注于你如何实例化类,你需要在这里改变一些地方过于:

标签不隐藏,因为它们被创建与WindowInhalt.label(self)

当你的类窗口从WindowInhalt继承,你可以直接叫

self.label() # in initme(), same for the buttons 

但你需要更改WindowInhalt每个标签声明,通过添加自

+0

好吧,我试试谢谢 – Yuto

+0

是啊,现在它的工作原理非常感谢我还是一个初学者 – Yuto

+0

@Yuto没有概率,想想当你创建一个类时,它是创建对象的模型,不要直接使用这个模型作为'WindowInhalt.label(self)',而是创建实例,就像你用'w = Window()'所做的那样。 – PRMoureu