Форум сайта python.su
Есть класс (Excel), ранее написанный, теперь хочу к нему гуи приделать. Возникла необходимость из этого стороннего класса получать доступ к виджетам, как сделать?
В частности добавлять данные в listWidget.
class Excel(QtGui.QDialog):
def __init__(self, path, parent=None):
QtGui.QDialog.__init__(self, parent)
self._path = path
self._xl = win32com.client.Dispatch("Excel.Application")
....
class Window(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
uic.loadUi("form.ui", self)
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
win = Window()
win.show()
app.exec_()
Офлайн
После uic.loadUi(“form.ui”, self) все виджеты ui-файла доступны по своему objectName в этом же классе. objectName задаётся в Designer-е для всех объектов.
Офлайн
Можно подробнее? Нужно из класса Window получить доступ к методам в классе Excel и наоборот из Excel получить доступ к виджетам в Window. Пытаюсь делать так:
import sys
from PyQt4 import QtCore, QtGui, uic
class Test():
def __init__(self):
self.w = Window()
def test(self):
self.w.list1.addItem("dff")
class Window(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
uic.loadUi("form.ui", self)
self.t = Test()
@QtCore.pyqtSignature("")
def on_bt1_clicked(self):
self.t.test()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
win = Window()
win.show()
app.exec_()
Офлайн
Можно и так наверное сделать, но это не идеальный способ:
import sys
from PyQt4 import QtCore, QtGui, uic
class Test():
def __init__(self, parent):
self.w = parent
def test(self):
self.w.list1.addItem("dff")
class Window(QtGui.QDialog):
def __init__(self, parent=None):
QtGui.QDialog.__init__(self, parent)
uic.loadUi("form.ui", self)
self.t = Test(self)
@QtCore.pyqtSignature("")
def on_bt1_clicked(self):
self.t.test()
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
win = Window()
win.show()
app.exec_()
Офлайн
Можно пример, как связать сигналами?
Офлайн