如何在标签中求解覆盖文本 - > PYQT标签?

发布于 2025-02-07 08:12:53 字数 3450 浏览 0 评论 0原文

我定义函数,将filepath添加到标签中以进行循环。我使用qfiledialog.getopenfileenames函数加载文件路径中的mdb_paths1变量。然后,在for循环的每个步骤中,我创建一个新标签并将其设置为网格中的另一个位置,然后将文件路径存储在其中。

我有问题。如果我想第二次上传FilePath(第二次克利亚按钮),我的印刷filepaths将得到覆盖。

你能帮助我吗 ?

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QGridLayout, QFileDialog,QCheckBox)
from PyQt5 import QtCore
import os
from PyQt5 import QtGui, QtWidgets, QtCore, Qt
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import qtawesome as qta


class Ui_MainWindow(object):
    def __init__(self):
        super().__init__()

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setWindowModality(QtCore.Qt.NonModal)
        MainWindow.resize(1000, 1000)

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.hboxlayout1= QtWidgets.QHBoxLayout(self.centralwidget)
        
        self.vboxlayout1 = QtWidgets.QVBoxLayout()
        self.hboxlayout1.addLayout(self.vboxlayout1)

        self.vboxlayout2 = QtWidgets.QVBoxLayout()
        self.hboxlayout1.addLayout(self.vboxlayout2)

        #GRID 1---------------------------------------------------------------------------------------------
        #self.grid1 = QtWidgets.QGridLayout(self.centralwidget)
        self.grid1 = QtWidgets.QGridLayout()
        self.vboxlayout1.addLayout(self.grid1)
        

        self.label1_1 = QtWidgets.QLabel(self.centralwidget)
        self.label1_1.setObjectName("label")
        self.label1_1.setText("Upload files --> ")
        self.label1_1.setStyleSheet("background-color: white") 
        self.label1_1.adjustSize() 
        self.grid1.addWidget(self.label1_1, 0, 1)

        self.button1_1 = QtWidgets.QPushButton(self.centralwidget)
        self.button1_1.setObjectName("button")
        self.button1_1.setText("BROWSE")
        self.button1_1.clicked.connect(self.open_mdb1)
        self.grid1.addWidget(self.button1_1, 0, 2)
       
        self.label1_2 = QtWidgets.QLabel(self.centralwidget)
        self.label1_2.setObjectName("label1")
        self.label1_2.setText("Uploaded files: ")
        self.grid1.addWidget(self.label1_2, 1, 1)       
        #---------------------------------------------------------------------------------------------------------

        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Data quality controller"))

  

    def open_mdb1(self):  

        mdb_paths1, _ = QFileDialog.getOpenFileNames(self.centralwidget,
                                                  'Select file',
                                                  './',
                                                  'Access Files (*.mdb *.accdb)')

        self.label1_2.setText("")
       
        for a in range(len(mdb_paths1)):
                self.label1_2 = QtWidgets.QLabel(self.centralwidget)
                self.label1_2.setObjectName("label2")
                self.label1_2.setText(mdb_paths1[a])
                print(a)
                self.grid1.addWidget(self.label1_2, 1+a, 1)

覆盖标签

I define function which add filepaths to labels in for loop. I load the file path using the QFileDialog.getOpenFileNames function into the mdb_paths1 variable. Then, in each step of the for loop, I create a new label and set it to another location in the grid and store the file path in it.

I have a problem. If I want to upload filepaths second time (by cliking button second time), my printed filepaths will get overwrite.

Can you help me ?

from PyQt5 import QtWidgets
from PyQt5.QtWidgets import (QApplication, QWidget, QPushButton, QGridLayout, QFileDialog,QCheckBox)
from PyQt5 import QtCore
import os
from PyQt5 import QtGui, QtWidgets, QtCore, Qt
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import qtawesome as qta


class Ui_MainWindow(object):
    def __init__(self):
        super().__init__()

    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.setWindowModality(QtCore.Qt.NonModal)
        MainWindow.resize(1000, 1000)

        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.hboxlayout1= QtWidgets.QHBoxLayout(self.centralwidget)
        
        self.vboxlayout1 = QtWidgets.QVBoxLayout()
        self.hboxlayout1.addLayout(self.vboxlayout1)

        self.vboxlayout2 = QtWidgets.QVBoxLayout()
        self.hboxlayout1.addLayout(self.vboxlayout2)

        #GRID 1---------------------------------------------------------------------------------------------
        #self.grid1 = QtWidgets.QGridLayout(self.centralwidget)
        self.grid1 = QtWidgets.QGridLayout()
        self.vboxlayout1.addLayout(self.grid1)
        

        self.label1_1 = QtWidgets.QLabel(self.centralwidget)
        self.label1_1.setObjectName("label")
        self.label1_1.setText("Upload files --> ")
        self.label1_1.setStyleSheet("background-color: white") 
        self.label1_1.adjustSize() 
        self.grid1.addWidget(self.label1_1, 0, 1)

        self.button1_1 = QtWidgets.QPushButton(self.centralwidget)
        self.button1_1.setObjectName("button")
        self.button1_1.setText("BROWSE")
        self.button1_1.clicked.connect(self.open_mdb1)
        self.grid1.addWidget(self.button1_1, 0, 2)
       
        self.label1_2 = QtWidgets.QLabel(self.centralwidget)
        self.label1_2.setObjectName("label1")
        self.label1_2.setText("Uploaded files: ")
        self.grid1.addWidget(self.label1_2, 1, 1)       
        #---------------------------------------------------------------------------------------------------------

        MainWindow.setCentralWidget(self.centralwidget)
        self.retranslateUi(MainWindow)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Data quality controller"))

  

    def open_mdb1(self):  

        mdb_paths1, _ = QFileDialog.getOpenFileNames(self.centralwidget,
                                                  'Select file',
                                                  './',
                                                  'Access Files (*.mdb *.accdb)')

        self.label1_2.setText("")
       
        for a in range(len(mdb_paths1)):
                self.label1_2 = QtWidgets.QLabel(self.centralwidget)
                self.label1_2.setObjectName("label2")
                self.label1_2.setText(mdb_paths1[a])
                print(a)
                self.grid1.addWidget(self.label1_2, 1+a, 1)

overwrited labels

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

大姐,你呐 2025-02-14 08:12:53

尝试以下操作:


        label1_2 = QtWidgets.QLabel(self.centralwidget)
        label1_2.setObjectName("label1")
        label1_2.setText("Uploaded files: ")
        self.grid1.addWidget(label1_2, 1, 1)
        self.labels = []
        self.labels.append(label1_2)
        #---------------------------------------------------------------------------------------------------------

        self.setCentralWidget(self.centralwidget)
        self.retranslateUi(self)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Data quality controller"))



    def open_mdb1(self):
        mdb_paths1, _ = QFileDialog.getOpenFileNames(
            self.centralwidget,'Select file','./','Access Files (*.mdb *.accdb)'
        )
        total = len(mdb_paths1)
        num_labels = len(self.labels)
        for i in range(total):
            if i < num_labels:
                label = self.labels[i]
                label.setText(mdb_paths1[i])
            else:
                label = QLabel(self.centralwidget)
                label.setText(mdb_paths1[i])
                self.grid1.addWidget(label,self.grid1.rowCount(), 1)
                self.labels.append(label)

Try this:


        label1_2 = QtWidgets.QLabel(self.centralwidget)
        label1_2.setObjectName("label1")
        label1_2.setText("Uploaded files: ")
        self.grid1.addWidget(label1_2, 1, 1)
        self.labels = []
        self.labels.append(label1_2)
        #---------------------------------------------------------------------------------------------------------

        self.setCentralWidget(self.centralwidget)
        self.retranslateUi(self)

    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "Data quality controller"))



    def open_mdb1(self):
        mdb_paths1, _ = QFileDialog.getOpenFileNames(
            self.centralwidget,'Select file','./','Access Files (*.mdb *.accdb)'
        )
        total = len(mdb_paths1)
        num_labels = len(self.labels)
        for i in range(total):
            if i < num_labels:
                label = self.labels[i]
                label.setText(mdb_paths1[i])
            else:
                label = QLabel(self.centralwidget)
                label.setText(mdb_paths1[i])
                self.grid1.addWidget(label,self.grid1.rowCount(), 1)
                self.labels.append(label)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文