Как использовать продвинутый класс в PyQt5? - PullRequest
0 голосов
/ 23 марта 2020

в принципе я снова открываю свой вопрос несколько дней go:

где-то-я-пишу-класс-для-единственного-повышен-qwidget-from-qt -designer

Решение работает, но я сталкиваюсь с еще 2 вопросами

, если я хочу изменить текст в классе neuLabel, как мне указать класс вне основной программы? ?

Дополнительная информация для минимального необходимого примера:

У меня есть главное окно qt designer, которое называется testpromote.ui. Он содержит только одну метку. Текст «MyLabel», имя neuLabel, и оно обозначается как neulabel.

Мне нужно 2 .py файла в одном каталоге. Сначала основной testpromote.py

import sys
import os
from PyQt5 import uic
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *  #QPainter
import neulabel



CURRENT_DIR = os.path.dirname(os.path.realpath(__file__))

uifile_1 = os.path.join(CURRENT_DIR, "testpromote.ui")
form_1, base_1 = uic.loadUiType(uifile_1)

class myApp(base_1, form_1):
    def __init__(self):
        super(base_1,self).__init__()
        self.setupUi(self)
        # ??????????????
        #neuLabel.setText(neuLabel,"from main")
        # ??????????????

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = myApp()   #Dialog()
    ex.show()
    sys.exit(app.exec_())

2-й файл - neulabel.py

from PyQt5.QtWidgets import *
from PyQt5 import uic
from PyQt5 import QtCore, QtWidgets, QtGui
from PyQt5.QtCore import *
from PyQt5.QtGui import *  #QPainter


class neuLabel(QLabel):
    def __init__(self,parent=None):
        super().__init__(parent)
        self.setAcceptDrops(True)
        self.setText("from code")

        print("the new pixmap?", self.text())

Моя цель - изменить текст метка из основной программы testpromote.py

Я не понимаю, как импортировать neulabel.py, чтобы я мог изменить текст метки. Я пробовал с помощью "neuLabel.setText (neuLabel , "из основного") ", но это не работает. Я пробовал это с другим кодом тоже, но не успешно. (Это отмечено в строках # ?????????)

Чтобы увидеть, если текст в метке изменяется, я добавил в neulabel.py значение

self. оператор setText (), но текст в окне не изменяется.

(надеюсь, теперь это стало понятнее)

...