bazooka
покажи код
короче смысл такой: У меня есть одна форма-вход в систему,другая просто тупа форма)))и не могу понять как открыть вторую форму и закрыть при этом первую чтобы все работало.
код для формы вход в систему:
#!usr/bin/python
#-*-coding:utf-8-*-
import sys
from PyQt4 import QtCore,QtGui
from Form_mainwindow import Form_mainwindow
class Form_enter_in_system(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setGeometry(450,350,237,110)
self.setFixedSize(237,110)
self.setWindowIcon(QtGui.QIcon(“logo\enter.png”))
self.setWindowTitle(“Вход в систему”)
self.font_text=QtGui.QFont(self)
self.font_text.setPointSize(11)
self.font_text.setFamily(“Arial”)
self.font_help=QtGui.QFont(self)
self.font_help.setPointSize(10)
self.font_help.setFamily(“Times New Roman”)
self.labels_widget=QtGui.QWidget(self)
self.labels_widget.setGeometry(0,0,75,90)
self.vertical_labels=QtGui.QVBoxLayout(self.labels_widget)
self.label_login=QtGui.QLabel(self)
self.label_login.setText(“Логин”)
self.label_login.setFont(self.font_text)
self.label_password=QtGui.QLabel(self)
self.label_password.setText(“Пароль”)
self.label_password.setFont(self.font_text)
self.vertical_labels.addWidget(self.label_login)
self.vertical_labels.addWidget(self.label_password)
self.edits_widget=QtGui.QWidget(self)
self.edits_widget.setGeometry(60,0,181,90)
self.vertical_edits=QtGui.QVBoxLayout(self.edits_widget)
self.edit_login=QtGui.QLineEdit(self)
self.edit_login.setMaxLength(20)
self.edit_login.setToolTip(“Допустимо максимум 20 символов”)
QtGui.QToolTip.setFont(self.font_help)
self.edit_password=QtGui.QLineEdit(self)
self.edit_password.setEchoMode(QtGui.QLineEdit.Password)
self.edit_password.setMaxLength(20)
self.edit_password.setToolTip(“Допустимо максимум 20 символов”)
QtGui.QToolTip.setFont(self.font_help)
self.vertical_edits.addWidget(self.edit_login)
self.vertical_edits.addWidget(self.edit_password)
self.buttons_widget=QtGui.QWidget(self)
self.buttons_widget.setGeometry(60,70,181,46)
self.horizontal_buttons=QtGui.QHBoxLayout(self.buttons_widget)
self.button_enter=QtGui.QPushButton(“Войти”,self)
self.button_exit=QtGui.QPushButton(“Выйти”,self)
self.horizontal_buttons.addWidget(self.button_enter)
self.horizontal_buttons.addWidget(self.button_exit)
self.connect(self.button_exit,QtCore.SIGNAL(“clicked()”),sys.exit)
self.connect(self.button_enter,QtCore.SIGNAL(“clicked()”),self.proverka)
def proverka(self):
text_login=self.edit_login.text()
text_password=self.edit_password.text()
if text_login==“admin” and text_password==“admin”:
#ну здесь я думаю закрываю приложение где первая форма,НО я не уверен и надо ли это вообще)))
app_form_enter_in_system.exit()
#здесь действую по аналогии с тем моментом,когда создавал первую форму и создаю вторую,Но я не знаю правильно ли
app_mainwindow=QtGui.QApplication(sys.argv)
my_mainwindow=Form_mainwindow()
my_mainwindow.show()
sys.exit(app_mainwindow.exec_())
else:
self.error_massege()
def error_massege(self):
QtGui.QMessageBox.question(self, “Ошибка”, “Вы неправильно ввели логин или пароль.Чтобы попробывать снова нажмите кнопку ОК.”, QtGui.QMessageBox.Ok,)
if QtGui.QMessageBox.Ok:
QtGui.QMessageBox.Close
#создаю объект Qt-приложения и передаю его конструктору параметры командной строки
app_form_enter_in_system=QtGui.QApplication(sys.argv)
#создаю объект своего созданного класса
my_form_enter_in_system=Form_enter_in_system()
#показываю свою формочку
my_form_enter_in_system.show()
#апускаем цикл обработки событий
sys.exit(app_form_enter_in_system.exec_())
код второй формы:
#!usr/bin/python
#-*-coding:utf-8-*-
import sys
from PyQt4 import QtGui,QtCore
class Form_mainwindow(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.setGeometry(450,350,500,500)
self.setWindowIcon(QtGui.QIcon(“logo/main”))
self.setWindowTitle(“Магазин автозапчастей”)
И в общем я рассуждал так что когда я создаю первую форму и запускаю для неё цикл обработки событий: sys.exit(app_form_enter_in_system.exec_())
то когда я закрою эту форму то цикл завершится и я смогу создать по аналогии вторую форму и уже для неё запустить свой такой же цикл. Но когда я это делаю ошибка вроде как говорит что этот цикл уже запущен.Ну в общем мои рассуждения ты наверное понял)))(вполне возможно что это полный бред).
Короче я недели две на питоне))так что не суди меня строго,и помоги мне пожалуйста разобраться как делаются подобные вещи.
Может я даже не правильно понял,просто примера хорошего не нашел,где бы показывалась ситуация при переходе от одной формы к другой при нажатии кнопки.
Буду тебе очень благодарен.