[英]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.