fbpx

QtPy4: не работает setText

289 просмотра
0
0 Комментариев

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import sys
from PyQt4 import QtGui, QtCore
 
class Example(QtGui.QWidget):
 
    def __init__(self):
        super(Example, self).__init__()
 
        self.initUI()
 
    def initUI(self):
 
        lbl2 = QtGui.QLabel('Введите количество клеток в квадрате ', self)   # это виджет прописывающий строчку
        lbl2.move(15, 10)
 
        qbtn = QtGui.QPushButton('Ввод', self)          # это кнопка отвечающая за выключение
        qbtn.move(90, 130)
        self.connect (qbtn, QtCore.SIGNAL("clicked()") ,self.on_clicked)
 
        self.lbl = QtGui.QLabel(self)      # эта надпись привязана к строчке qle
        self.lbl.move(60, 90)
 
        qle = QtGui.QLineEdit(self)  # строчка отвечающая за отображении на надписи lbl
        qle.move(60, 40)
 
        qle.textChanged[str].connect(self.onChanged)  # механика связки qle
        self.qle = qle
 
        #textCopyButton = QtGui.QPushButton("&Copy Text", self)
        #self.connect(textCopyButton, QtCore.SIGNAL("clicked()"), self.copyText)
        #selfconnect(self.button, QtCore.SIGNAL("clicked()"),self.on_clicked)
 
        self.setGeometry(300, 300, 280, 170)
        self.setWindowTitle('Змейка')
        self.show()
 
    #def copyText(self):
        #clipboard = QApplication.clipboard()
        #clipboard.setText("I've been clipped!")
 
    def onChanged(self, text): # механика связки qle
 
        self.lbl.setText(text)
        self.lbl.adjustSize()
 
    def on_clicked(self):
        #self.lbl.setText("Hoвaя надпись" )
        self.input_value = self.qle.text()
        print (self.input_value)
        if not self.input_value.isdigit():
            print ('вы ввели не число ' * 3 )
            **self.lbl.setText("вы ввели не число !"  )   # сет текст не отображает полностью надпись**
 
        else:
            num = int(self.input_value)
            if num < 40:
                print ('слишком маленкое количество клеток играть будет не интересно ')
                **self.lbl.setText('слишком маленкое количество клеток играть будет не интересно ')**
            else:
                summaMassiv1 = int(num) * int(num)
                print ( summaMassiv1 )
 
        #self.qbtn.setDisabled(True)
 
def main():
 
    app = QtGui.QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())
 
if __name__ == '__main__':
    main()

в общем не отображает надпись self.lbl.setText("вы ввели не число !" ) а точнее отображает но только если я ввел буквы в количестве равном размеру этой фразы


Добавить комментарий

1 Ответы

Python Опубликовано 19.01.2019
0

Попробовал на Windows.
Пришлось заменить:

self.input_value.isdigit()

на:

str(self.input_value).isdigit()

…иначе вылетало исключение: AttributeError: ‘QString’ object has no attribute ‘isdigit’

У вас явно проблема с компоновкой формы. Объект QLabel по умолчанию похоже раздвигает поле для текста автоматически при достижении какого то предела наполнения, который вы опытным путём и нашли.

Добавить комментарий
Напишите свой ответ на данный вопрос.
Scroll Up