隐藏和显示函数,如何解决它?

2024-07-05 11:26:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个关于隐藏函数的问题。你知道吗

我有: 2个按钮Button_Zeritifikat1Button_Zertifikat2

带有图像labal_zertifikat1label_Zeritifikat2的2个标签

2个标签,显示页码(德语)label_seite1labal_seite2

如果我启动我的应用程序,它会显示第一个图像和显示页码的第一个标签。你知道吗

如果我按我的按钮,它会显示标签\u seite2,但不会隐藏标签\u seite1,所以我的问题是,“.hide”函数是否错误?如何隐藏标签2?你知道吗

它的矿井窗口


from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtGui import QPixmap


class Ui_Zertifikat(object):
    def setupUi(self, WindowZertifikat):
        self.myWindowZertifikat = WindowZertifikat
        WindowZertifikat.setObjectName("Form")
        WindowZertifikat.setGeometry(300,300,822,566)

        self.label_Zertifikat1 = QtWidgets.QLabel(WindowZertifikat)
        self.label_Zertifikat1.setGeometry(0,0,822,494)
        self.label_Zertifikat1.setPixmap(QPixmap("./image/speichern.png"))

        self.label_seite1 = QtWidgets.QLabel(self.myWindowZertifikat)
        self.label_seite1.setGeometry(361,495,100,30)
        self.label_seite1.setText("Seite 1 von 2")
        self.label_seite1.setStyleSheet(
        "QLabel{color:Black; font-size:11pt; font-weight:550}"
        )




        self.Button_Zertifikat1 = QtWidgets.QPushButton(self.myWindowZertifikat)
        self.Button_Zertifikat1.setGeometry(422,530,130,30)
        self.Button_Zertifikat1.setText("Nächste Seite")
        self.Button_Zertifikat1.setStyleSheet(
        "QPushButton{background-color: #0000FF; border-width: 2px; border-style: solid; border-color: Black; color:white; font-size:10pt; font-weight:500}"
        "QPushButton:hover{background-color: #08088A; border-width: 2px; border-style: solid; border-color: Black}"
        )

        self.Button_Zertifikat2 = QtWidgets.QPushButton(self.myWindowZertifikat)
        self.Button_Zertifikat2.setGeometry(270,530,130,30)
        self.Button_Zertifikat2.setText("Vorherige Seite")
        self.Button_Zertifikat2.setStyleSheet(
        "QPushButton{background-color: #0000FF; border-width: 2px; border-style: solid; border-color: Black; color:white; font-size:10pt; font-weight:500}"
        "QPushButton:hover{background-color: #08088A; border-width: 2px; border-style: solid; border-color: Black}"
        )    




        self.Button_Zertifikat1.clicked.connect(lambda: self.ZertifikatSeiten(0))
        self.Button_Zertifikat2.clicked.connect(lambda: self.ZertifikatSeiten(1))        


    def ZertifikatSeiten(self, b):
        self.label_Zertifikat2 = QtWidgets.QLabel(self.myWindowZertifikat)
        self.label_Zertifikat2.setGeometry(0,0,822,494)
        self.label_Zertifikat2.setPixmap(QPixmap("./image/umbenennen.png"))

        self.label_Zertifikat1 = QtWidgets.QLabel(self.myWindowZertifikat)
        self.label_Zertifikat1.setGeometry(0,0,822,494)
        self.label_Zertifikat1.setPixmap(QPixmap("./image/speichern.png"))        

        self.label_seite1 = QtWidgets.QLabel(self.myWindowZertifikat)
        self.label_seite1.setGeometry(361,495,100,30)
        self.label_seite1.setText("Seite 1 von 2")
        self.label_seite1.setStyleSheet(
        "QLabel{color:Black; font-size:11pt; font-weight:550}"
        )

        self.label_seite2 = QtWidgets.QLabel(self.myWindowZertifikat)
        self.label_seite2.setGeometry(361,495,100,30)
        self.label_seite2.setText("Seite 2 von 2")
        self.label_seite2.setStyleSheet(
        "QLabel{color:Black; font-size:11pt; font-weight:550}"
        )

        if b == 0:

            self.label_Zertifikat2.show()
            self.label_seite2.show()
            self.label_seite1.hide()



        elif b == 1:

            self.label_Zertifikat1.show()
            self.label_seite1.show()
            self.label_seite2.hide()



if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    WindowZertifikat = QtWidgets.QWidget()
    ui = Ui_Zertifikat()
    ui.setupUi(WindowZertifikat)
    WindowZertifikat.show()
    sys.exit(app.exec_())

Tags: selfbuttonlabelcolorfontborderqtwidgetssetgeometry
1条回答
网友
1楼 · 发布于 2024-07-05 11:26:43

主要问题是每次按下按钮时都在创建新的qlabel。相反,您必须只创建一次qlabel,并且只隐藏必要的qlabel。你知道吗

class Ui_Zertifikat(object):
    def setupUi(self, WindowZertifikat):
        self.myWindowZertifikat = WindowZertifikat
        WindowZertifikat.setObjectName("Form")
        WindowZertifikat.setGeometry(300, 300, 822, 566)

        self.label_Zertifikat1 = QtWidgets.QLabel(WindowZertifikat)
        self.label_Zertifikat1.setGeometry(0, 0, 822, 494)
        self.label_Zertifikat1.setPixmap(QPixmap("./image/speichern.png"))

        self.label_seite1 = QtWidgets.QLabel(self.myWindowZertifikat)
        self.label_seite1.setGeometry(361, 495, 100, 30)
        self.label_seite1.setText("Seite 1 von 2")
        self.label_seite1.setStyleSheet(
            "QLabel{color:Black; font-size:11pt; font-weight:550}"
        )

        self.label_Zertifikat2 = QtWidgets.QLabel(self.myWindowZertifikat)
        self.label_Zertifikat2.setGeometry(0, 0, 822, 494)
        self.label_Zertifikat2.setPixmap(QPixmap("./image/umbenennen.png"))

        self.label_seite2 = QtWidgets.QLabel(self.myWindowZertifikat)
        self.label_seite2.setGeometry(361, 495, 100, 30)
        self.label_seite2.setText("Seite 2 von 2")
        self.label_seite2.setStyleSheet(
            "QLabel{color:Black; font-size:11pt; font-weight:550}"
        )

        self.Button_Zertifikat1 = QtWidgets.QPushButton(self.myWindowZertifikat)
        self.Button_Zertifikat1.setGeometry(422, 530, 130, 30)
        self.Button_Zertifikat1.setText("Nächste Seite")
        self.Button_Zertifikat1.setStyleSheet(
            "QPushButton{background-color: #0000FF; border-width: 2px; border-style: solid; border-color: Black; color:white; font-size:10pt; font-weight:500}"
            "QPushButton:hover{background-color: #08088A; border-width: 2px; border-style: solid; border-color: Black}"
        )

        self.Button_Zertifikat2 = QtWidgets.QPushButton(self.myWindowZertifikat)
        self.Button_Zertifikat2.setGeometry(270, 530, 130, 30)
        self.Button_Zertifikat2.setText("Vorherige Seite")
        self.Button_Zertifikat2.setStyleSheet(
            "QPushButton{background-color: #0000FF; border-width: 2px; border-style: solid; border-color: Black; color:white; font-size:10pt; font-weight:500}"
            "QPushButton:hover{background-color: #08088A; border-width: 2px; border-style: solid; border-color: Black}"
        )

        self.Button_Zertifikat1.clicked.connect(lambda: self.ZertifikatSeiten(0))
        self.Button_Zertifikat2.clicked.connect(lambda: self.ZertifikatSeiten(1))

        self.ZertifikatSeiten(1)

    def ZertifikatSeiten(self, b):
        if b == 0:
            self.label_Zertifikat2.show()
            self.label_seite2.show()
            self.label_Zertifikat1.hide()
            self.label_seite1.hide()

        elif b == 1:
            self.label_Zertifikat1.show()
            self.label_seite1.show()
            self.label_Zertifikat2.hide()
            self.label_seite2.hide()

另一个更简单的解决方案是只更改文本和QPixmap,而不需要创建n个qlabel

class Ui_Zertifikat(object):
    def setupUi(self, WindowZertifikat):
        self.myWindowZertifikat = WindowZertifikat
        WindowZertifikat.setObjectName("Form")
        WindowZertifikat.setGeometry(300, 300, 822, 566)

        self.label_Zertifikat1 = QtWidgets.QLabel(WindowZertifikat)
        self.label_Zertifikat1.setGeometry(0, 0, 822, 494)
        self.label_Zertifikat1.setPixmap(QPixmap("./image/speichern.png"))

        self.label_seite1 = QtWidgets.QLabel(self.myWindowZertifikat)
        self.label_seite1.setGeometry(361, 495, 100, 30)
        self.label_seite1.setText("Seite 1 von 2")
        self.label_seite1.setStyleSheet(
            "QLabel{color:Black; font-size:11pt; font-weight:550}"
        )

        self.Button_Zertifikat1 = QtWidgets.QPushButton(self.myWindowZertifikat)
        self.Button_Zertifikat1.setGeometry(422, 530, 130, 30)
        self.Button_Zertifikat1.setText("Nächste Seite")
        self.Button_Zertifikat1.setStyleSheet(
            "QPushButton{background-color: #0000FF; border-width: 2px; border-style: solid; border-color: Black; color:white; font-size:10pt; font-weight:500}"
            "QPushButton:hover{background-color: #08088A; border-width: 2px; border-style: solid; border-color: Black}"
        )

        self.Button_Zertifikat2 = QtWidgets.QPushButton(self.myWindowZertifikat)
        self.Button_Zertifikat2.setGeometry(270, 530, 130, 30)
        self.Button_Zertifikat2.setText("Vorherige Seite")
        self.Button_Zertifikat2.setStyleSheet(
            "QPushButton{background-color: #0000FF; border-width: 2px; border-style: solid; border-color: Black; color:white; font-size:10pt; font-weight:500}"
            "QPushButton:hover{background-color: #08088A; border-width: 2px; border-style: solid; border-color: Black}"
        )

        self.Button_Zertifikat1.clicked.connect(lambda: self.ZertifikatSeiten(0))
        self.Button_Zertifikat2.clicked.connect(lambda: self.ZertifikatSeiten(1))

        self.ZertifikatSeiten(1)

    def ZertifikatSeiten(self, b):
        if b == 0:
            self.label_Zertifikat1.setText("Seite 2 von 2")
            self.label_seite1.setPixmap(QPixmap("./image/umbenennen.png"))

        elif b == 1:
            self.label_Zertifikat1.setText("Seite 1 von 2")
            self.label_seite1.setPixmap(QPixmap("./image/speichern.png"))

相关问题 更多 >