Я создал интерфейс в Qt как .ui-файл, а затем преобразовал его в файл python. Затем я хотел добавить некоторые функциональные возможности для таких компонентов, как переключатель и т. Д. Для этого я попытался повторно реализовать класс из Qt и добавить мои события. Но это дает следующее сообщение об ошибке:Как перекомпилировать Ui_MainWindow, сгенерированный Qt
self.radioButton_2.toggled.connect(self.radioButton2Clicked)
NameError: name 'self' is not defined
Мой первый вопрос, является ли правильный/правильный способ иметь дело с классами, порожденных Qt? И, во-вторых, почему я получаю ошибку?
Мой код здесь:
import sys
from PySide import QtCore, QtGui
from InterfaceClass_Test01 import Ui_MainWindow
class MainInterface(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MainInterface, self).__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
def setupUi(self, MainWindow):
super(MainInterface, self).setupUi(parent, MainWindow)
self.radioButton.toggled.connect(self.radioButtonClicked)
self.radioButton_2.toggled.connect(self.radioButton2Clicked)
self.radioButton_3.toggled.connect(self.radioButton3Clicked)
def radioButton3Clicked(self, enabled):
pass
def radioButton2Clicked(self, enabled):
pass
def radioButtonClicked(self, enabled):
pass
спасибо! Да, это решило проблему! Вопрос: класс MainInterface имеет 2 аргумента, а это значит, что у него есть 2 родителя! Итак, как я могу узнать, какой __init__ вызывается, когда я запускаю его с помощью метода Super? –
Класс 'MainInterface' не имеет двух родителей: он наследует от двух базовых классов. Вызов [super] (http://docs.python.org/2/library/functions.html#super) гарантирует, что '__init__' всех базовых классов (и _their_ базовых классов и т. Д.) Вызывается в правильный порядок. – ekhumoro