Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
PyQt5

Переход между окнами через нажатие кнопки

25.02.2023, 14:55. Показов 7698. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Подскажите, пожалуйста:

Задали разработать графическое приложение. Я в этом деле совсем новичок, поэтому пользуюсь в помощь видео-уроками и интернетом, чтобы найти хоть какие-то ответы на свои вопросы. Но вот возникла проблема, решение которой я не могу найти или не догоняю:

В общем, создаю "менюшки" через Qt Designer, а затем конвертирую расширения файлов ui в py. Но вот не знаю, как сделать переход из одного меню в другое по нажатию кнопки:

1-ое меню (menu_1): окно с 2 кнопками (Регистрация и Вход). Нужно, чтобы по нажатию на кнопку Регистрация открывалось меню 2 (registr_1) и закрывалось, естественно, предыдущее меню.

Прилагаю два питоновских файла - менюшки, созданные через qt designer.

Подскажите, пожалуйста, как сделать этот переход по нажатию кнопки. Просто все мои попытки хоть как-то это сделать вызывают различные ошибки

1-ое меню:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
from PyQt5 import QtCore, QtGui, QtWidgets
 
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(300, 163)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(50, 70, 200, 30))
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(50, 40, 200, 30))
        self.pushButton.setObjectName("pushButton")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 300, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton_2.setText(_translate("MainWindow", "Вход"))
        self.pushButton.setText(_translate("MainWindow", "Регистрация"))
 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
2-ое меню:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
from PyQt5 import QtCore, QtGui, QtWidgets
 
 
class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(300, 226)
        self.centralwidget = QtWidgets.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(130, 160, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(210, 160, 75, 23))
        self.pushButton_2.setObjectName("pushButton_2")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(10, 60, 47, 21))
        self.label.setObjectName("label")
        self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget)
        self.plainTextEdit.setGeometry(QtCore.QRect(130, 60, 161, 21))
        self.plainTextEdit.setObjectName("plainTextEdit")
        self.plainTextEdit_2 = QtWidgets.QPlainTextEdit(self.centralwidget)
        self.plainTextEdit_2.setGeometry(QtCore.QRect(130, 90, 161, 21))
        self.plainTextEdit_2.setObjectName("plainTextEdit_2")
        self.plainTextEdit_3 = QtWidgets.QPlainTextEdit(self.centralwidget)
        self.plainTextEdit_3.setGeometry(QtCore.QRect(130, 120, 161, 21))
        self.plainTextEdit_3.setObjectName("plainTextEdit_3")
        self.label_2 = QtWidgets.QLabel(self.centralwidget)
        self.label_2.setGeometry(QtCore.QRect(10, 90, 47, 21))
        self.label_2.setObjectName("label_2")
        self.label_3 = QtWidgets.QLabel(self.centralwidget)
        self.label_3.setGeometry(QtCore.QRect(10, 120, 111, 16))
        self.label_3.setObjectName("label_3")
        self.label_4 = QtWidgets.QLabel(self.centralwidget)
        self.label_4.setGeometry(QtCore.QRect(110, 10, 71, 16))
        self.label_4.setObjectName("label_4")
        MainWindow.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar(MainWindow)
        self.menubar.setGeometry(QtCore.QRect(0, 0, 300, 21))
        self.menubar.setObjectName("menubar")
        MainWindow.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)
 
        self.retranslateUi(MainWindow)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
    def retranslateUi(self, MainWindow):
        _translate = QtCore.QCoreApplication.translate
        MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
        self.pushButton.setText(_translate("MainWindow", "Принять"))
        self.pushButton_2.setText(_translate("MainWindow", "Отмена"))
        self.label.setText(_translate("MainWindow", "Логин"))
        self.label_2.setText(_translate("MainWindow", "Пароль"))
        self.label_3.setText(_translate("MainWindow", "Подтвердите пароль"))
        self.label_4.setText(_translate("MainWindow", "Регистрация"))
 
 
if __name__ == "__main__":
    import sys
    app = QtWidgets.QApplication(sys.argv)
    MainWindow = QtWidgets.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())
Вложения
Тип файла: rar Buttons.RAR (1.8 Кб, 2 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.02.2023, 14:55
Ответы с готовыми решениями:

Как сделать переход между окнами быстрее?
Приветствую товарищи! Нужно сделать переход между экранами, то есть я могу их сделать но мне кажется это слишком затратно, потому...

Переход между окнами
Читая книгу по андройду и юзая AndroidStudio воздник вопрос* при создании нового проекта в андройде при указании формы BlankActivity ...

Переход между окнами
Имеется функция для перехода между окнами public void openNewScene(String window,Button butName) { ...

30
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
04.03.2023, 11:30  [ТС]
Студворк — интернет-сервис помощи студентам
iamvic, Я понимаю, что программа от меня просит. Я просто подумал, что здесь пропущено что-то важное, что Вы недописали (предположил, что и у Вас код не работает). Я уже разобрался
0
290 / 205 / 68
Регистрация: 18.09.2019
Сообщений: 407
Записей в блоге: 58
04.03.2023, 11:48
Fershtein, "мопед не мой!" От опечаток никто не застрахован. Чтобы понять, есть ли там что-нибудь важное, достаточно прочитать документацию по QApplication.
0
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
04.03.2023, 12:28  [ТС]
iamvic, Вот еще хотел бы уточнить некоторые моменты по Вашему коду:

Цитата Сообщение от Fudthhh Посмотреть сообщение
def on_register_PushButton_pressed(self) -> None:
        # username = self.username_LineEdit.text()
        # password = self.password_LineEdit.text()
        return self.accept()
Что именно делает команда return self.accept() ?
0
290 / 205 / 68
Регистрация: 18.09.2019
Сообщений: 407
Записей в блоге: 58
04.03.2023, 12:58
Автор кода, Fudthhh, может ответить точнее, а а цитата из документции выглядит так:
Hides the modal dialog and sets the result code to Accepted.
0
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
04.03.2023, 14:25  [ТС]
iamvic, Ну вот окно прячется, это я заметил. А вот что он "принимает" конкретно - не понятно

Добавлено через 1 час 13 минут
Fudthhh,

Прошу прощения за беспокойство, но я хотел бы попросить Вас еще об одной помощи с кнопками. В Вашем коде переход происходит между диалоговыми окнами (QDialog). А как перейти с Диалогового окна в Главное окно (QMainWindow)?

Я добавил к Вашему коду еще одно диалоговой окно Register_2 и Попытался хотя бы как-нибудь открыть окно Menu по нажатию кнопки. Но выдает ошибку. Сразу хочу уточнить, что окно Menu, которое откроется, будет полной дичью (я уже отдельно запускал это окно и посмотрел). Но мне нужно лишь сам факт переключение на это окно через кнопку, а дальше я попробую сам все расположить:

Вот моя попытка с кодом:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
from PyQt5 import QtWidgets, QtCore
import sys
 
class EnterDialog(QtWidgets.QDialog):
 
    def __init__(self, parent: QtWidgets.QWidget = None) -> None:
        QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.Dialog)
        self.setWindowTitle("Вход в систему...")
 
        self.username_LineEdit = QtWidgets.QLineEdit(self)
        self.password_LineEdit = QtWidgets.QLineEdit(self)
 
        self.enter_PushButton = QtWidgets.QPushButton("Вход", self)
        self.enter_PushButton.pressed.connect(self.on_enter_PushButton_pressed)
 
        layout = QtWidgets.QFormLayout(self)
        layout.addRow("Пользователь", self.username_LineEdit)
        layout.addRow("Пароль", self.password_LineEdit)
        layout.addRow(self.enter_PushButton)
 
    def on_enter_PushButton_pressed(self) -> None:
        username = self.username_LineEdit.text()
        password = self.password_LineEdit.text()
        return self.accept()
 
 
class RegisterDialog(QtWidgets.QDialog):
 
    def __init__(self, parent: QtWidgets.QWidget = None) -> None:
        QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.Dialog)
        self.setWindowTitle("Регистрация...")
 
        self.username_LineEdit = QtWidgets.QLineEdit(self)
        self.password_LineEdit = QtWidgets.QLineEdit(self)
 
        self.register_PushButton = QtWidgets.QPushButton("Регистрация", self)
        self.register_PushButton.pressed.connect(self.on_register_PushButton_pressed)
 
        layout = QtWidgets.QFormLayout(self)
        layout.addRow("Имя пользователя", self.username_LineEdit)
        layout.addRow("Пароль", self.password_LineEdit)
        layout.addRow(self.register_PushButton)
 
    def on_register_PushButton_pressed(self) -> None:
        #username = self.username_LineEdit.text()
        #password = self.password_LineEdit.text()
        #return self.accept()
        self.hide()
        dialog2 = RegisterDialog_2(self)
        dialog2.exec_()
        self.show()
 
 
 
class MainDialog(QtWidgets.QDialog):
 
    def __init__(self, parent: QtWidgets.QWidget = None) -> None:
        QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.Dialog)
        self.setWindowTitle("Главное меню...")
 
        self.enter_PushButton = QtWidgets.QPushButton("Вход", self)
        self.enter_PushButton.pressed.connect(self.on_enter_PushButton_pressed)
 
        self.register_PushButton = QtWidgets.QPushButton("Регистрация", self)
        self.register_PushButton.pressed.connect(self.on_register_PushButton_pressed)
 
        self.hBoxLayout = QtWidgets.QHBoxLayout(self)
        self.hBoxLayout.addWidget(self.enter_PushButton)
        self.hBoxLayout.addWidget(self.register_PushButton)
 
    def on_enter_PushButton_pressed(self) -> None:
        self.hide()
        dialog = EnterDialog(self)
        dialog.exec_()
        dialog.show()
 
    def on_register_PushButton_pressed(self) -> None:
        self.hide()
        dialog = RegisterDialog(self)
        dialog.exec_()
        self.show()
 
class RegisterDialog_2(QtWidgets.QDialog):
 
    def __init__(self, parent: QtWidgets.QWidget = None) -> None:
        QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.Dialog)
        self.setWindowTitle("Регистрация...")
 
        self.lastname_LineEdit = QtWidgets.QLineEdit(self)
        self.firstname_LineEdit = QtWidgets.QLineEdit(self)
        self.telephone_number_LineEdit = QtWidgets.QLineEdit(self)
        self.country_LineEdit = QtWidgets.QLineEdit(self)
        self.city_LineEdit = QtWidgets.QLineEdit(self)
        self.street_LineEdit = QtWidgets.QLineEdit(self)
        self.house_LineEdit = QtWidgets.QLineEdit(self)
        self.apartment_LineEdit = QtWidgets.QLineEdit(self)
 
        self.register2_PushButton = QtWidgets.QPushButton("Регистрация", self)
        self.register2_PushButton.pressed.connect(self.on_register2_PushButton_pressed)
 
        layout = QtWidgets.QFormLayout(self)
        layout.addRow("Фамилия", self.lastname_LineEdit)
        layout.addRow("Имя", self.firstname_LineEdit)
        layout.addRow("Телефон", self.telephone_number_LineEdit)
        layout.addRow("Страна", self.country_LineEdit)
        layout.addRow("Город", self.city_LineEdit)
        layout.addRow("Улица", self.street_LineEdit)
        layout.addRow("Дом", self.house_LineEdit)
        layout.addRow("Квартира", self.apartment_LineEdit)
        layout.addRow(self.register2_PushButton)
 
    def on_register2_PushButton_pressed(self) -> None:
        #lastname = self.lastname_LineEdit.text()
        #firstname = self.firstname_LineEdit.text()
        #telephone_number = self.telephone_number_LineEdit.text()
        #country = self.country_LineEdit.text()
        #city = self.city_LineEdit.text()
        #street = self.street_LineEdit.text()
        #house = self.house_LineEdit.text()
        #apartment = self.apartment_LineEdit.text()
        #return self.accept()
        self.hide()
        menu = Menu(self)
        menu.exec_()
        self.show()
 
class Menu(QtWidgets.QMainWindow):
    def __init__(self):
        super(Menu, self).__init__()
 
        self.setWindowTitle("Меню...")
 
        self.change_PushButton = QtWidgets.QPushButton("Изменить данные", self)
 
        self.active_PushButton = QtWidgets.QPushButton("Активация сигнализации", self)
 
        self.deactive_PushButton = QtWidgets.QPushButton("Деактивация сигнализации", self)
 
        self.archive_PushButton = QtWidgets.QPushButton("Архив изображений", self)
 
        self.help_PushButton = QtWidgets.QPushButton("Помощь", self)
 
        self.exit_PushButton = QtWidgets.QPushButton("Выход из профиля", self)
 
        self.delete_profile_PushButton = QtWidgets.QPushButton("Удалить профиль", self)
 
 
 
 
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    w = MainDialog()
    w.show()
    app.exec_()
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
06.03.2023, 11:42
Цитата Сообщение от Fershtein Посмотреть сообщение
Ну вот окно прячется, это я заметил. А вот что он "принимает" конкретно - не понятно
Это говорит что диалоговое окно завершено подтверждением, закрытие диалогового окна через крестик вызывает похожую функцию reject(). Это просто сообщает нам что пользователь ввел данные и нажал на кнопку, а не просто закрыл диалог.

В моем примере, MainDialog выступает главным окном, его можно и переделать в QMainWindow, разницы нет.
Два остальных диалога, это дочерние диалоги, и они создаются внутри MainDialog при нажатии кнопок, метод hide - скрывает наше главное окно, далее создается экземпляр диалога, метод exec_ у диалога перехватывает управление потоком на себя, поэтому все процессы останавливаются и пока диалог не закроется, функция show (у главного окна) не будет вызываться.

Создание окна "RegisterDialog_2" должно происходить в главном окне как это происходит в функциях: on_enter_PushButton_pressed и on_register_PushButton_pressed, если даже это для понимания сложно, то стоит отложить все это дело и начать с изучения документации qt, если и так будет не понятно, то тогда перейти на первые главы основ и начать оттуда.

Добавлено через 4 минуты
P.S. Логика должна быть такой, что есть главное окно, и оно вызывает дочерние, не должно быть рекурсии в плане, одно окно вызывает второе, второе - третье, третье - четвертое и четвертое - первое (в целом можно, но не нужно, это неправильно). Главное окно вызывает дочерние, если из дочернего, надо попасть в другое дочерние окно, то выставляем дочернему окну какой то результат, закрываем окно, проверяем в главном окне результат, а потом при необходимости согласно анализу результата, совершаем какие то действия.

Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от iamvic Посмотреть сообщение
Прекрасно, Fudthhh, больше решений - хороших и разных
Я уже ухожу от питона, в данный момент переношу все проекты на сишный Qt, профитнее, удобнее.



Добавлено через 27 минут
Пример с переходом из дочернего в дочернее окно.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
from enum import Enum
from PySide2 import QtWidgets, QtCore
 
 
@QtCore.QEnum
class Result(int, Enum):
    BACK, ENTER, REGISTER = 1, 2, 3
 
 
class CustomDialog(QtWidgets.QDialog):
    my_result: Result =  Result.BACK
 
 
class EnterDialog(CustomDialog):
 
    def __init__(self, parent: QtWidgets.QWidget = None) -> None:
        QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.Dialog)
        self.setWindowTitle("Вход в систему...")
 
        self.username_LineEdit = QtWidgets.QLineEdit(self)
        self.password_LineEdit = QtWidgets.QLineEdit(self)
 
        self.enter_PushButton = QtWidgets.QPushButton("Вход", self)
        self.enter_PushButton.pressed.connect(self.on_enter_PushButton_pressed)
 
        self.register_PushButton = QtWidgets.QPushButton("Регистрация", self)
        self.register_PushButton.pressed.connect(self.on_register_PushButton_pressed)
 
        layout = QtWidgets.QFormLayout(self)
        layout.addRow("Пользователь", self.username_LineEdit)
        layout.addRow("Пароль", self.password_LineEdit)
        layout.addRow(self.enter_PushButton)
        layout.addRow(self.register_PushButton)
 
    def on_enter_PushButton_pressed(self) -> None:
        # username = self.username_LineEdit.text()
        # password = self.password_LineEdit.text()
        self.my_result = Result.BACK
        return self.accept()
 
    def on_register_PushButton_pressed(self) -> None:
        self.my_result = Result.REGISTER
        return self.accept()
 
 
class RegisterDialog(CustomDialog):
 
    def __init__(self, parent: QtWidgets.QWidget = None) -> None:
        QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.Dialog)
        self.setWindowTitle("Регистрация...")
 
        self.username_LineEdit = QtWidgets.QLineEdit(self)
        self.password_LineEdit = QtWidgets.QLineEdit(self)
 
        self.register_PushButton = QtWidgets.QPushButton("Регистрация", self)
        self.register_PushButton.pressed.connect(self.on_register_PushButton_pressed)
 
        layout = QtWidgets.QFormLayout(self)
        layout.addRow("Имя пользователя", self.username_LineEdit)
        layout.addRow("Пароль", self.password_LineEdit)
        layout.addRow(self.register_PushButton)
 
    def on_register_PushButton_pressed(self) -> None:
        # username = self.username_LineEdit.text()
        # password = self.password_LineEdit.text()
        self.my_result = Result.BACK
        return self.accept()
 
 
class MainDialog(QtWidgets.QDialog):
 
    def __init__(self, parent: QtWidgets.QWidget = None) -> None:
        QtWidgets.QDialog.__init__(self, parent, QtCore.Qt.Dialog)
        self.setWindowTitle("Главное меню...")
 
        self.enter_PushButton = QtWidgets.QPushButton("Вход", self)
        self.enter_PushButton.pressed.connect(self.on_enter_PushButton_pressed)
 
        self.register_PushButton = QtWidgets.QPushButton("Регистрация", self)
        self.register_PushButton.pressed.connect(self.on_register_PushButton_pressed)
 
        self.hBoxLayout = QtWidgets.QHBoxLayout(self)
        self.hBoxLayout.addWidget(self.enter_PushButton)
        self.hBoxLayout.addWidget(self.register_PushButton)
 
    def on_enter_PushButton_pressed(self) -> None:
        self.show_dialog(EnterDialog(self))
 
    def on_register_PushButton_pressed(self) -> None:
        self.show_dialog(RegisterDialog(self))
 
    def show_dialog(self, dialog: CustomDialog = None) -> None:
        self.hide()
        if dialog.exec_() == QtWidgets.QDialog.Accepted:
            if dialog.my_result == Result.BACK:
                self.show()
            elif dialog.my_result == Result.REGISTER:
                self.show_dialog(RegisterDialog(self))
            elif dialog.my_result == Result.ENTER:
                self.show_dialog(EnterDialog(self))
        else:
            self.show()
 
 
if __name__ == "__main__":
    app = QtWidgets.QApplication()
    w = MainDialog()
    w.show()
    app.exec_()
Добавлено через 4 минуты
P.S. но из кода видно (старцы наверное углядят?), что использование exec с такой логикой не особо клеиться, и тут нужно использовать систему сигналов.
0
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
06.03.2023, 13:08  [ТС]
Fudthhh, Да это какая-то, простите, задница. Как бы если это все самостоятельно изучать с документацией - зачем тогда нужен преподаватель? В чем его роль?

А если преподаватель должен обучать, то пусть он мне и объясняет, как все устроено, и лишь в крайнем случае дает мне документацию.

В общем и целом, я попробую что-нибудь сварганить на основе Ваших примеров
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
06.03.2023, 13:44
Цитата Сообщение от Fershtein Посмотреть сообщение
Как бы если это все самостоятельно изучать с документацией - зачем тогда нужен преподаватель? В чем его роль?
Этот вопрос слишком обширный, по факту преподаватель дает только направление и вкратце о нем рассказывает, чтоб ты сам начал обучаться. Учитывая сколько платят преподавателям (плавали - знаем), они обязаны что то разжевывать, только в крайнем случае, например когда информация разница в разных ресурсах (например, объяснять что питон второй и третей версии сильно различаются нет смысла объяснять, а вот что в версиях до 3.5(вроде) словарь является неупорядоченным набором элементов, а после упорядоченным - объяснить может, но тоже не вижу особой необходимости, как пример что преподаватель должен объяснить, что не стоит использовать новейшие версии питона, т.к. разработчики библиотек не всегда быстро подстраивают свою библиотеки). Учить сейчас кого то - дело неблагодарное, т. к. это не ценится, ученики учатся - чтобы просто получить бумагу, преподаватели учат - чтобы получить деньги, все.

Да и в целом, преподаватели сейчас - это либо старики, которые используют устаревшие планы обучения, либо молодежь - закончившая какой ни будь Я.Лицей или Сириус получившие свое образование, с помощью выкладывания заданий на этот же форум.

Чтоб стать программистом, нужно учиться самому (и не только изучать язык, а вообще как все работает), да - это скучно, сложно, иногда ты будешь плакать ночами на пролёт, будут отпускаться руки, но когда перетерпишь и выучишь основы программирования, изучишь пару библиотек, напишешь простой проект, тогда все начнет изучаться в быстром темпе. А так же придет осознание того, что кодить это вообще самое последнее дело, главное понимать что должна делать программа и как, а написать ее и на любом языке можно.
1
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
06.03.2023, 13:57
Цитата Сообщение от Fershtein Посмотреть сообщение
В общем и целом, я попробую что-нибудь сварганить на основе Ваших примеров
Начни с простого, т. к. ты не можешь объяснить словами что тебе нужно, нарисуй блок-схему, вот реализация которую я скинул в первый раз:
0
4 / 4 / 0
Регистрация: 07.03.2019
Сообщений: 249
06.03.2023, 15:04  [ТС]
Fudthhh, Ну давайте я попробую завтра на примерах блок-схемы объяснить, что я хочу получить в итоге
0
06.03.2023, 15:22

Не по теме:

Цитата Сообщение от Fudthhh Посмотреть сообщение
Учитывая сколько платят преподавателям (плавали - знаем), они обязаны что то разжевывать, только в крайнем случае
Цитата Сообщение от Fudthhh Посмотреть сообщение
ученики учатся - чтобы просто получить бумагу, преподаватели учат - чтобы получить деньги
По щеке скатилась слеза... Как говорится "не в бровь, а в глаз".

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.03.2023, 15:22

Рандомный переход между окнами
Суть в следующем: на "главном" окне есть кнопка, по нажатию которой должно рандомно открываться 2 или 3 окно. Не могу разобраться как это...

Переход между окнами JavaFX
Создал несколько окон, теперь хочу сделать, что бы после нажатия на кнопку в одном окне, открывалось второе. Подскажите как это можно...

Переход между диалоговыми окнами (MFC)
Помогите пожалуйста. Как реализовать переход между 2-мя диалоговыми окнами по кнопке? Раньше делал как то и забыл, помню что в коде...

Переход между окнами Windows Forms
Как при нажатии на кнопку в Форме 2, закрыть Форму1 - главную, и открыть форму3. у меня не получается: 2 закрывается, 3 открывается, но...

Переход между окнами по нескольким кнопкам
помогите пожалуйста я знаю как прописать переход если на экране 1 кнопка, но как прописать если их 2 и больше и все они ведут на разные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
После закрытия оутлука продолжает висеть процесс в диспетчере задач
Maks 27.10.2026
С недавнего времени в продакшене возникла проблема: при закрытии оутлука в диспетчере задач продолжал висеть процесс outlook. exe. Проблема возникла после установки MS Office 2021 LTSC на машинах, под. . .
Baragoz - DPS/HPS бот для WoW 3.3.5a, многоязычный
AmbA 26.10.2026
Хотите ещё ботов? У меня есть один! А я пока отдохну от него. https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=12062&stc=1&d=1793007952 Инструкция внутри. https:/ / youtu. be/ VpfFZSUDGnQ. . .
Особенности gif сгенерированных в Си
russiannick 21.10.2026
Рассмотрим генерацию gif файлов, которые в Си имеют свои особенности. Gif представляет собой графический формат популярный в интернете. Посмотрим на палитру. Gif файл сгенерированный в си отличается. . .
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru