Форум сайта python.su
Прошу прощения, за такой глупый вопрос, и еще более глупое объяснение.
Как сделать так, что бы можно было скрыть\удалить widget не из класса с графической оболочкой, а из другого класса.
Т.е. если, например, есть класс A, а в нем есть функция X и если в функции X счетчик досчитал до 100, то widget из класса M, пропал бы..
Спасибо!
Офлайн
Не понял, что тебе мешает удалить/скрыть виджет откуда угодно. Все от архитектуры зависит. Может ты какие-то сложности себе понаписал? Покажи код.
Офлайн
У меня сейчас вот так…
from PyQt4 import QtCore, QtGui
class A(object):
def X(self,n):
for i in range(n):
pass
M().widget.hide()
M().widget_2.show()
class M(object):
def s1(self):
A().X(1000)
def s2(self):
self.widget_2.hide()
self.widget.show()
def setupUi(self, mainWindow):
mainWindow.setObjectName("mainWindow")
mainWindow.setEnabled(True)
mainWindow.resize(300, 300)
mainWindow.setMinimumSize(QtCore.QSize(300, 300))
mainWindow.setMaximumSize(QtCore.QSize(300, 300))
mainWindow.setBaseSize(QtCore.QSize(300, 300))
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap("ico.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
mainWindow.setWindowIcon(icon)
self.centralwidget = QtGui.QWidget(mainWindow)
self.centralwidget.setObjectName("centralwidget")
self.widget = QtGui.QWidget(self.centralwidget)
self.widget.setGeometry(QtCore.QRect(0, 0, 300, 300))
self.widget.setObjectName("widget")
self.pushButton = QtGui.QPushButton(self.widget)
self.pushButton.setGeometry(QtCore.QRect(100, 100, 100, 30))
self.pushButton.setObjectName("pushButton")
self.widget_2 = QtGui.QWidget(self.centralwidget)
self.widget_2.setGeometry(QtCore.QRect(0, 0, 300, 300))
self.widget_2.setObjectName("widget")
self.pushButton_2 = QtGui.QPushButton(self.widget_2)
self.pushButton_2.setGeometry(QtCore.QRect(100, 150, 100, 30))
self.pushButton_2.setObjectName("pushButton_2")
mainWindow.setCentralWidget(self.centralwidget)
self.widget_2.hide()
self.retranslateUi(mainWindow)
QtCore.QObject.connect(self.pushButton, QtCore.SIGNAL("pressed()"), self.s1)
QtCore.QObject.connect(self.pushButton_2, QtCore.SIGNAL("pressed()"), self.s2)
def retranslateUi(self, mainWindow):
self.pushButton.setText(QtGui.QApplication.translate("mainWindow", "1", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton_2.setText(QtGui.QApplication.translate("mainWindow", "2", None, QtGui.QApplication.UnicodeUTF8))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
MainWindow = QtGui.QMainWindow()
ui = M()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
Офлайн
Гы, ни строчки разумного кода :) Вот самые откровенные косяки:
1. Первое и самое главное - называй объекты понятными именами, по которым можно понять что это такое. Конечно, если это не микропример из 5 строк.
2. Похоже, ты скопировал строчки из сгенерированного утилитой pyuic файла? Не делай так, просто инклудь его и наследуй свой класс от сгенерированного. Короче, нагугли туториалы по pyqt, а то ты совсем не шаришь.
3.
M().widget.hide()
M().widget_2.show()
zazaza
Естественно эту штука не работает…
Офлайн