Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Доступ из стороннего класса в класс формы PyQT4 [RSS Feed]

#1 Янв. 5, 2009 19:18:07

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Доступ из стороннего класса в класс формы PyQT4

Есть класс (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_()



Офлайн

#2 Янв. 6, 2009 03:46:31

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Доступ из стороннего класса в класс формы PyQT4

После uic.loadUi(“form.ui”, self) все виджеты ui-файла доступны по своему objectName в этом же классе. objectName задаётся в Designer-е для всех объектов.



Офлайн

#3 Янв. 6, 2009 07:19:44

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Доступ из стороннего класса в класс формы PyQT4

Можно подробнее? Нужно из класса 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_()
Происходит зацикливание обращений из класса в класс… Что делать?



Офлайн

#4 Янв. 6, 2009 13:26:06

poltergeist
От:
Зарегистрирован: 2007-02-28
Сообщения: 522
Репутация: +  0  -
Профиль   Отправить e-mail  

Доступ из стороннего класса в класс формы PyQT4

Можно и так наверное сделать, но это не идеальный способ:

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_()
Лучше всего конечно связать эти два класса сигналами, чтобы не делать циклических ссылок друг на друга, как в примере… Но для мелких задач и такое сойдёт.



Офлайн

#5 Янв. 10, 2009 12:35:29

Landing
От:
Зарегистрирован: 2008-07-01
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

Доступ из стороннего класса в класс формы PyQT4

Можно пример, как связать сигналами?



Офлайн

  • Начало
  • » GUI
  • » Доступ из стороннего класса в класс формы PyQT4[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version