Venus
а это вы привели пример как создать окно! но у меня уже есть созданный шаблон в кутэ6 дизайнер - mainwindow.ру, запускаю main.py! и есть скрипт(модуль) питон sample.py. вот на окне есть спин боксы(читал книгу и всякое всякое обясняется на с++ у меня не так много(пока) познаний в питоне чтоб примеры на с++ переделать на питон) пример привели но для одного спина (там в окне несколько) а для двух как?
Да неважно, вот я вам дал простое окно с двумя спинбоксами, вставте его в ваш скрипт чтобы оно работало так как вы хотите, потому как я уже писал выше , после выплнения app.exec_() запускается главный обработчик событий КУТЕ (бесконечный цикл, грубо говоря), и скрипт дальше не будет работать пока этот обработчик не завершит свою работу. А когда он завершит работу, то вобщем уже не важно как вы будете передавать ваши значения, потому как там всеравно будут только последние актуальные значения, и у вас не выйдет менять их “на ходу”.
Вот наглядный пример если так проще
#
import sys
from PyQt4 import QtGui
class MainWindow(QtGui.QWidget):
def __init__(self, parent = None):
super().__init__(parent = parent)
self.layout = QtGui.QGridLayout(self)
# r
self.r_label = QtGui.QLabel(self, text = 'r:')
self.r = QtGui.QSpinBox(self) # Создаем спинбокс
self.r.setObjectName('r') # Устанавлваем имя виджета, чтобы понимать кто отправитель события
self.r.setRange(1, 10)
self.r.setSingleStep(1)
self.layout.addWidget(self.r_label, 0, 0)
self.layout.addWidget(self.r, 0, 1)
# t
self.t_label = QtGui.QLabel(self, text = 't:')
self.t = QtGui.QSpinBox(self) # Создаем спинбокс
self.t.setObjectName('t') # Устанавлваем имя виджета, чтобы понимать кто отправитель события
self.t.setRange(1, 10)
self.t.setSingleStep(1)
self.layout.addWidget(self.t_label, 1, 0)
self.layout.addWidget(self.t, 1, 1)
self.t.installEventFilter(self)
self.r.valueChanged.connect(self.r_changed) # соединяем каждый спинбокс с своим слотом
self.t.valueChanged.connect(self.t_changed) # соединяем каждый спинбокс с своим слотом
self.r.valueChanged.connect(self.changed) # соединяем все спинбоксы с одним слотом
self.t.valueChanged.connect(self.changed) # соединяем все спинбоксы с одним слотом
self.show()
def get_r(self):
# возвращает r
return self.r.value()
def get_t(self):
# возвращает t
return self.t.value()
def get_all(self):
# возвращает два значения первое r второе t
return self.r.value(), self.t.value()
def get_list_values(self):
# возвращает кортеж значений, первое r второе t
return (self.r.value(), self.t.value())
def get_dict_values(self):
# возвращает значения в виде словаря
return {'r':self.r.value(), 't':self.t.value()}
def r_changed(self, value):
# должно отработать когда меняют значение r
print('это метод r_changed, r=', value)
def t_changed(self, value):
# должно отработать когда меняют значение t
print('это метод t_changed, t=', value)
def changed(self, value):
# один слот к которому цепляються все спнбоксы, отрабатывает когда меняем значение любого спнбокса
sender_name = self.sender().objectName()
print('это метод changed, спинбокс ', sender_name, 'сменил значение', value)
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
mw = MainWindow()
print('запуск GUI (главный обработчик событий QT) , выполнение скрипта приостановлено')
app.exec_() # Вот тут скрипт остановиться пока вы не выйдете из GUI
print('GUI закрыто, продолжаем выполнение срипта...')
r = mw.get_r()
t = mw.get_t()
print('значения пооnдельности: r=', r, 't= ', t)
r,t = mw.get_all()
print('значения вместе: r=', r, 't= ', t)
lst = mw.get_list_values()
print('значения кортежем:', lst)
dct = mw.get_dict_values()
print('значения словарем:', dct)