简体   繁体   中英

QLineEdit not showing text

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.

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