I'm creating an application to test python codes. in my window i have two QLineEdit
one for comments count and another for Lines count.
those two QLineEdit
should show the number of comments and the number of lines after i open a file from my window
I have tried with QLineEdit.setText()
but it still not showing, however when I print the text in the QLineEdit
with QLineEdit.Text()
it returns the right value (even if its not visible inside the QLineEdit
).
This is my code so far:
def home(self)
self.nbcom = QtGui.QLineEdit(self)
self.validator = QtGui.QIntValidator()
self.nbcom.setValidator(self.validator)
self.nbcom.setMaxLength(5)
#self.nbcom.setReadOnly(True)
self.nblines = QtGui.QLineEdit(self)
self.nbcom.setValidator(self.validator)
self.nblines.setMaxLength(5)
def change_state(self):
print(self.nbcom.text())
print(self.nblines.text())
def File_Open(self):
self.numl = 0
self.commentCount = 0;
self.name = QtGui.QFileDialog.getOpenFileName(self, 'Open File')
self.home()
with open(self.name, 'r') as file:
print("file name :", self.name)
for eachLine in file: # loops the lines in the file object ans sets the pointer to the end of the file
if eachLine.strip(): # check if the line is a blank line
self.numl += 1
if eachLine.find('#') != -1: # looks to find the comment tag
self.commentCount += 1
print("number of comments %i" % self.commentCount)
print("num lines %i: "% self.numl)
self.nbcom.setText(str(self.commentCount))
self.nblines.setText(str(self.numl))
Sorry, I have PyQt5 and I just rearranged the call to the self.home()
method in the constructor. And fixed one typo by changing self.nbcom.setValidator(self.validator)
to self.nblines.setValidator(self.validator)
. Everything is working.
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
#from PyQt4.QtCore import *
#from PyQt4.QtGui import *
class Example(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.home() # +++
layout = QVBoxLayout(self)
layout.addWidget(self.nbcom)
layout.addWidget(self.nblines)
self.btn = QPushButton("Button change_state")
self.btn.clicked.connect(self.change_state)
layout.addWidget(self.btn)
self.btn2 = QPushButton("File_Open")
self.btn2.clicked.connect(self.File_Open)
layout.addWidget(self.btn2)
def home(self):
self.nbcom = QLineEdit(self)
self.validator = QIntValidator()
self.nbcom.setValidator(self.validator)
self.nbcom.setMaxLength(5)
#self.nbcom.setReadOnly(True)
self.nblines = QLineEdit(self)
self.nblines.setValidator(self.validator) # nblines <- nbcom !!!
self.nblines.setMaxLength(5)
def change_state(self):
print(self.nbcom.text())
print(self.nblines.text())
def File_Open(self):
self.numl = 0
self.commentCount = 0;
# self.name = QFileDialog.getOpenFileName(self, 'Open File') # for PyQt4
self.name, _ = QFileDialog.getOpenFileName(self, 'Open File') # for PyQt5
# self.home() # ---
with open(self.name, 'r') as file:
print("file name :", self.name)
for eachLine in file: # loops the lines in the file object ans sets the pointer to the end of the file
if eachLine.strip(): # check if the line is a blank line
self.numl += 1
if eachLine.find('#') != -1: # looks to find the comment tag
self.commentCount += 1
print("number of comments %i" % self.commentCount)
print("num lines %i: "% self.numl)
self.nbcom.setText(str(self.commentCount))
self.nblines.setText(str(self.numl))
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
w = Example()
w.setWindowTitle('qradiobutton-in-qtablewidget')
w.setWindowIcon(QIcon('im.png'))
w.resize(400, 150)
w.show()
sys.exit(app.exec())
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.