繁体   English   中英

在 PyQt5 中获取 QLineEdit 的 len

[英]Get the len of QLineEdit in PyQt5

我正在编写一个项目,它会从用户那里获取文件地址(路径)。 当用户点击下一步按钮时,她进入加载页面。 我这里遇到了一个问题,当用户没有指定文件的地址和路径时,她就进入了loading页面。 我想在用户单击按钮而不指定文件路径时写入QLineEdit,请指定路径或类似的东西。

而且我觉得为此目的应该检查 QlineEdit 的长度,如果它小于一,它应该为用户编写文本,但问题是没有测量 QLineEdit 值长度的函数。

首先,我想将 QLineEdit 转换为字符串,而 Python 不允许在 Python 中这样做。

这是项目来源:

from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton , QFileDialog, QWidget, QLineEdit, QStatusBar, QMenuBar
from PyQt5.QtCore import QRect, QCoreApplication, QMetaObject
from PyQt5.QtGui import QFont
import sys
import time

class Ui(QMainWindow):
    def __init__(self):
        super(Ui, self).__init__()
        MainWindow.setObjectName("MainWindow")
        MainWindow.setEnabled(True)
        MainWindow.resize(577, 287)
        self.setWindowTitle("Browse Your File")
        self.centralwidget = QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.lineEdit = QLineEdit(self.centralwidget)
        self.lineEdit.setGeometry(QRect(20, 40, 541, 61))
        font = QFont()
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.lineEdit.setFont(font)
        self.lineEdit.setStyleSheet("QLineEdit {\n"
        "background: #93deed;\n"
        "border: 2px solid rgb(0 , 170 , 255);\n"
        "border-radius: 30px ;\n"
        "color: white;\n"
"}\n"
"\n"
"QLineEdit:focus {\n"
"    border: 2px solid #DA7B93;\n"
"}")
        self.lineEdit.setObjectName("lineEdit")
        self.pushButton = QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QRect(50, 160, 151, 61))
        font = QFont()
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.lineEdit.setReadOnly(True)
        self.pushButton.setFont(font)
        self.pushButton.setStyleSheet("QPushButton {\n"
"    background: #2F4454;\n"
"    border: 2px solid #2F4454;\n"
"    border-radius: 25px;\n"
"    color:white;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    background-color: #DA7B93;\n"
"    border: 2px solid #DA7B93;\n"
"}\n"
"")
        self.pushButton.setObjectName("pushButton")
        self.nextBtn = QPushButton(self.centralwidget)
        self.nextBtn.setGeometry(QRect(350, 160, 151, 61))
        font = QFont()
        font.setPointSize(16)
        font.setBold(True)
        font.setWeight(75)
        self.nextBtn.setFont(font)
        self.nextBtn.setStyleSheet("QPushButton {\n"
"    background: #2F4454;\n"
"    border: 2px solid #2F4454;\n"
"    border-radius: 25px;\n"
"    color:white;\n"
"}\n"
"\n"
"QPushButton:hover {\n"
"    background-color: #DA7B93;\n"
"    border: 2px solid #DA7B93;\n"
"}\n"
"")
        self.pushButton.setObjectName("nextBtn")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QMenuBar(MainWindow)
        self.menubar.setGeometry(QRect(0, 0, 577, 26))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        QMetaObject.connectSlotsByName(MainWindow)

        self.pushButton.clicked.connect(self.Clicker)
        self.nextBtn.clicked.connect(self.Next)
        self.nextBtn.clicked.connect(MainWindow.close)
    
    def Clicker(self):
        # Open File:
        global fname 
        fname = QFileDialog.getOpenFileName(self, "Open File", "", "Video Files (*.mp4);;Video Files (*.mov);;Video Files (*.avi);;Video Files (*.mkv)")
        # Output File DIR to Screen:
        if fname:
                self.lineEdit.setText(" "+str(fname[0])) 

    def Next(self):
        global Video_Address
        lineEditNew = str(self.lineEdit)
        if (self.lineEdit) <= 1:
            self.lineEdit.setPlaceholderText("Invalid Directory...")
        else:    
            print(str(fname))
            Video_Address = str(fname[0])
            self.close()
            self.loading_screen = SplashScreen()
            self.loading_screen.show()

    def retranslateUi(self, MainWindow):
        _translate = QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("Browse Your File", "Browse Your File"))
        self.lineEdit.setPlaceholderText(_translate("MainWindow", " Directory Of Your Video..."))
        self.pushButton.setText(_translate("MainWindow", "Browse"))
        self.nextBtn.setText(_translate("MainWindow", "Next"))

这是程序环境。 通过浏览按钮,用户可以选择文件。 那个文件的路径写在那个 QLineEdit 里面。 按下下一步按钮,如果输入了路径,它将进入加载页面,如果不存在,QLineEdit 的文本将更改为无效地址或类似内容。

总之,如何测量输入到QLineEdit中的字符串的长度?

在您的Next方法中执行。

    def Next(self):
        global Video_Address
        text = self.lineEdit.text()
        if len(text) <= 1:
            self.lineEdit.setPlaceholderText("Invalid Directory...")
        ...
        ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM