Переменные экземпляра PyQt в конструкторе - PullRequest
0 голосов
/ 28 января 2019

В статье «Быстрое программирование с использованием Python и Qt» автор приводит этот пример в главе 4.

Мне кажется, что dial, spinbox и layout выйдут изобъем.Почему мы можем использовать dial вместо self.dial, spinbox вместо self.spinbox и layout вместо self.layout?Это хорошая практика или лучше использовать self. для всех элементов графического интерфейса?

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *

class Form(QDialog):

    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        dial = QDial()
        dial.setNotchesVisible(True)
        spinbox = QSpinBox()

        layout = QHBoxLayout()
        layout.addWidget(dial)
        layout.addWidget(spinbox)
        self.setLayout(layout)

        self.connect(dial, SIGNAL("valueChanged(int)"),
                 spinbox.setValue)
        self.connect(spinbox, SIGNAL("valueChanged(int)"),
                 dial.setValue)
        self.setWindowTitle("Signals and Slots")

app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()

1 Ответ

0 голосов
/ 28 января 2019

Да, эти переменные выходят из области видимости.

Но поскольку есть ссылки на базовые объекты (через layout и self.setLayout), на самом деле это не проблема, то есть виджеты / объекты не уничтожаются..

Если вам не нужен прямой доступ к ним в других частях вашего кода, тогда это нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...