У меня есть главное окно с несколькими ползунками и спинбоксом, значения которых получены из другого диалога редактирования.Все файлы .ui были преобразованы pyuic4 и используются в основной программе.Диалог редактирования состоит из ползунков и спинбокса с кнопками ОК и Отмена.Данные из диалога принимаются в главном окне.
Основной программный код
import sys
from PyQt4 import QtCore, QtGui
from Test_MainWindow import Ui_MainWindow
from dialogParameters2 import Ui_DialogParameters2
class AppWindow(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__() # python 3 version
self.setupUi(self)
self.action_Shutdown.triggered.connect(lambda: self.close_MyWindow())
self.action_Edit.triggered.connect(self.dialogParametersOpen)
def updateSpeedValue(self):
scaledValue = float(self.hSliderSpeed.value()) / 10 # type: float
# self.lblSpeedValue.setText(str(self.hSliderSpeed.value()))
print(scaledValue, type(scaledValue))
self.lblSpeedValue.setText(str(scaledValue))
def dialogParametersOpen(self):
dialogParameters = CreateParameterDialog()
# dialogParameters.show()
if dialogParameters.exec_():
print("Speed: %s, Rounds: %s, Overlap: %s " % (str(dialogParameters.lblSpeedValue.text()), \
str(dialogParameters.spinBoxRounds.value()),
str(dialogParameters.lblOverlapValue.text())))
self.hSliderSpeed.setValue(dialogParameters.hSliderSpeed.value())
self.spinBoxRounds.setValue(dialogParameters.spinBoxRounds.value())
self.hSliderOverlapDeg.setValue(dialogParameters.hSliderOverlap.value())
print('Dialog Completed with ' + str(dialogParameters.exec_()))
def close_MyWindow(self):
print("Window Closed")
# sys.exit()
class CreateAboutDialog(QtGui.QDialog, Ui_DialogAbout):
def __init__(self):
super().__init__()
# Python2 version
# super(self.__class__,self).__init__()
self.setupUi(self)
class CreateParameterDialog(QtGui.QDialog, Ui_DialogParameters2):
def __init__(self):
super().__init__()
# Python2 version
# super(self.__class__,self).__init__()
self.setupUi(self)
sendParametersData = QtCore.pyqtSignal(int,int,int)
self.pushBtnOK.clicked.connect(self.accept)
self.pusBtnCancel.clicked.connect(self.reject)
self.hSliderOverlap.valueChanged.connect(self.lblOverlapValue.setNum)
# self.hSliderSpeed.valueChanged.connect(self.lblSpeedValue.setNum)
self.hSliderSpeed.valueChanged.connect(self.updateSpeedData)
# self.hSliderOverlap.valueChanged.connect(self.updateOverlapData)
def updateSpeedData(self):
scaledValue = float(self.hSliderSpeed.value()) / 10 # type: float
# self.lblSpeedValue.setText(str(self.hSliderSpeed.value()))
print('value is: ')
print(scaledValue, type(scaledValue))
self.lblSpeedValue.setText(str(scaledValue))
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
window = AppWindow() # type: Instance of the Class
window.show()
sys.exit(app.exec_())
Теперь, после редактирования всех данных в диалоге, когда я один раз нажимаю кнопку ОК, данныеперенесено, но диалог не закрыт.При втором нажатии кнопки ОК диалоговое окно закрывается.Что я делаю не так?