我正在创建一个测试python代码的应用程序。
在我的窗口中,我有两个QLineEdit
一个用于评论计数,另一个用于行计数。
这两个QLineEdit
应该显示我从窗口打开文件后的注释数和行数
我尝试使用QLineEdit.setText()
但仍未显示,但是当我在QLineEdit
中使用QLineEdit.Text()
打印文本时,它会返回正确的值(即使它在内部不可见) QLineEdit
)。
到目前为止,这是我的代码:
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))
答案 0 :(得分:0)
对不起,我有PyQt5,我只是在构造函数中重新安排了对self.home()
方法的调用。
并通过将self.nbcom.setValidator(self.validator)
更改为self.nblines.setValidator(self.validator)
来解决一个错字。
一切正常。
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())