Форум сайта python.su
Здравствуйте! Подскажите, пожалуйста. Возник такой вопрос. В классе, в функции, отвечающей за ввод диалога переменной присваивается введённое значение. Но, получается, что это значение не записывается. Непонятно, почему. Можете подсказать? Программа рабочая, но некорректно выдаёт значения а и b
from PyQt4 import QtCore, QtGui import sys class ModalWind(QtGui.QWidget): def __init__(self, parent=None): super(ModalWind, self).__init__(parent) self.setWindowFlags(QtCore.Qt.Dialog | QtCore.Qt.WindowSystemMenuHint) self.setWindowModality(QtCore.Qt.WindowModal) self.setWindowTitle("Complete") self.resize(300, 100) self.lab = QtGui.QLabel('Данные введены!', self) butt_hide = QtGui.QPushButton('OK!') vbox = QtGui.QVBoxLayout() vbox.addWidget(butt_hide) self.setLayout(vbox) butt_hide.clicked.connect(self.close) class MainWind(QtGui.QWidget): def __init__(self, parent=None): super(MainWind, self).__init__(parent) self.a = 0 self.b = 0 self.c = 1 self.setWindowTitle('Выбор') self.setGeometry(500, 300, 350, 80) self.mainLayout = QtGui.QVBoxLayout(self) self.lab = QtGui.QLabel('Выберите', self) self.mainLayout.addWidget(self.lab) self.but1 = QtGui.QPushButton('1', self) self.but2 = QtGui.QPushButton('2', self) self.but3 = QtGui.QPushButton('3', self) self.mainLayout.addWidget(self.but1) self.mainLayout.addWidget(self.but2) self.mainLayout.addWidget(self.but3) self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.Dialog1) self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.close) self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.on_show) self.connect(self.but2, QtCore.SIGNAL('clicked()'), self.Dialog2) self.connect(self.but2, QtCore.SIGNAL('clicked()'), self.close) self.connect(self.but2, QtCore.SIGNAL('clicked()'), self.on_show) self.connect(self.but3, QtCore.SIGNAL('clicked()'), self.Dialog3) self.connect(self.but3, QtCore.SIGNAL('clicked()'), self.close) self.connect(self.but3, QtCore.SIGNAL('clicked()'), self.on_show) def Dialog1(self): self.a, ok = QtGui.QInputDialog.getInteger(self, '1', 'Введите') if ok: self.b, ok = QtGui.QInputDialog.getInteger(self, '1', 'Введите') self.c=1 def Dialog2(self): self.a, ok = QtGui.QInputDialog.getInteger(self, '2', 'Введите') if ok: self.b, ok = QtGui.QInputDialog.getInteger(self, '2', 'Введите') self.c = 2 def Dialog3(self): self.a, ok = QtGui.QInputDialog.getInteger(self, '3', 'Введите') if ok: self.b, ok = QtGui.QInputDialog.getInteger(self, '3', 'Введите') self.c = 3 def on_show(self): win = ModalWind(self) win.show() if __name__ == "__main__": app = QtGui.QApplication(sys.argv) win = MainWind() win.show()
print(win.a) sys.exit(app.exec_())
Отредактировано FishHook (Янв. 18, 2017 16:46:53)
Офлайн
не могу понять логику происходящего
self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.Dialog1) self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.close) self.connect(self.but1, QtCore.SIGNAL('clicked()'), self.on_show)
Офлайн
Ты печатаешь переменную при старте программы, до ввода данных.
Офлайн