python - 隐藏和显示功能,我该如何解决?
问题描述
我有一个关于隐藏功能的问题。
我有:2个按钮Button_Zeritifikat1
和Button_Zertifikat2
2个带有图像的标签labal_zertifikat1
和label_Zeritifikat2
2 个显示页码的标签(德语)label_seite1
和labal_seite2
如果我启动我的应用程序,它会显示第一个图像和第一个显示页码的 labal。
如果我按下我的按钮,它会显示 label_seite2 但它不会隐藏 label_seite1 所以我的问题是,“.hide”功能错了吗?如何隐藏 label_seite2 ?
它的矿窗
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_())
解决方案
主要问题是每次按下按钮时都会创建新的 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 QLabels
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"))
推荐阅读
- reactjs - 如何在 React 中从页面路由到另一个页面?
- python - 使用 tensorflow keras 后端将标量乘以张量
- javascript - node js,从 csv 文件中读取特定列并将其转换为要在其他函数中使用的数组
- typescript - 在 TypeScript 中使用可选泛型类型时如何避免不必要的参数?
- linux - AWK 脚本输入
- android - 为什么这是一个失败的断言?
- python - 在 Python 中将日期时间转换为以毫秒为单位的时间
- apache - .htaccess 在 firefox 中检查 index.php 时会生成一个 pre 标记
- r - R shinyApp 应用程序有效,但在我的 . 需要简化
- django - Django通过表自定义ManyToMany关系:模型表单保存(或save_m2m)期间未调用保存方法