Задать вопрос
  • Как установить размер текстового поля по его содержимому?

    @aselockd Автор вопроса
    Нашел решение

    def добавитьСообщениеВЧатПользователя(self, id : str, сообщение : str, alignment):
            контент = self.пользователиМеню.получитьКонтентПанель(id)
    
            if not hasattr(контент, "прокручиваемыйКонтент"):
                горизонталь = QVBoxLayout()
                контент.прокручиваемыйКонтент = ПрокручиваемыйВертикальноКонтент(контент)
                горизонталь.addWidget(контент.прокручиваемыйКонтент)
                контент.прокручиваемыйКонтент.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
                контент.setLayout(горизонталь)
    
                w, horizontal = QWidget(), QHBoxLayout()
                w.setLayout(horizontal)
                textInput = QPlainTextEdit()
                textInput.setFixedHeight(80)
                horizontal.addWidget(textInput)
                btnSend = QPushButton("Отправить")
                horizontal.addWidget(btnSend)
                горизонталь.addWidget(w, alignment=Qt.AlignBottom)
    
                def btnClick(_):
                    self.добавитьСообщениеВЧатПользователя(id, textInput.toPlainText(), Qt.AlignRight)
    
                btnSend.clicked.connect(btnClick)
    
                def keyPressEvent(event):
                    print(event, event.nativeModifiers(), Qt.KeyboardModifier.ShiftModifier)
    
                    if event.key() == Qt.Key_Return:
                        if event.nativeModifiers() == 528:
                            QPlainTextEdit.keyPressEvent(textInput, event)
                        else:
                            return btnClick(None)
                    else:
                        QPlainTextEdit.keyPressEvent(textInput, event)
                textInput.keyPressEvent = keyPressEvent
            
            if сообщение is not None and len(сообщение) > 0:
                виджет = QWidget()
                виджет.setGeometry(100,0,200, 50)
                виджет.move(контент.width() - 200, 0)
                виджет.setFixedHeight(50)
                виджет.setFixedWidth(300)
                виджет.setStyleSheet("""background-color: rgba(0,0,0,155)""")
    
                текст = QTextEdit(виджет)
                текст.setText(сообщение)
                текст.setGeometry(0,0,300,50)
                текст.setReadOnly(True)
                
                def timeout(*args, **kwargs): 
                    скроллер = текст.verticalScrollBar()
                    текст.setFixedHeight(текст.height() + (скроллер.maximum() - скроллер.value()))
                    виджет.setFixedHeight(текст.height())
                    
                    таймер = QTimer(виджет)
                    def update(*args, **kwargs):
                        контент.прокручиваемыйКонтент.scrollToTheEnd()
                        таймер.stop()
                    таймер.timeout.connect(update)
                    таймер.start(100)
                
                текст.verticalScrollBar().rangeChanged.connect(timeout)
    
                контент.прокручиваемыйКонтент.addWidget(виджет, alignment=alignment )
                контент.прокручиваемыйКонтент.scrollToTheEnd()
    Ответ написан
    Комментировать
  • Как можно найти последовательность методов, которые были применены к Java объекту?

    @aselockd
    Тебе нужны средства самоанализа в языке программирования, с помощью которых можно будет просто проитерировать все методы класса обьекта и получить какую либо другую информацию. Если я правильно понял.
    Ответ написан
    Комментировать