Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.93/30: Рейтинг темы: голосов - 30, средняя оценка - 4.93
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 9
PySide

Открытие формы по нажатию PushButton

23.04.2021, 14:17. Показов 6258. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Создал 14 форм в QtDesigner(1 стартовая с кнопками которые должны открывать остальные 13).
Не могу разобраться как прописать что бы по нажатию на 1 форме открывалась другая форма,13 кнопок и соответствующие 13 форм.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
23.04.2021, 14:17
Ответы с готовыми решениями:

Открытие другой формы по нажатию на button
День добрый, только начал учить PyQt5. Потыкал пару примеров в интернетах, создал MainWindow, кнопочки там, все такое. Но тут возникла...

Открытие формы по нажатию
Код кнопки: <a class="control" href="javascript:;" onclick="openStaticPopup()">Открыть профиль</a> <div...

Открытие формы по нажатию клавиши
Привет форумчане! Я создаю программку, и мне надо чтобы когда я допустим нажал F5 у меня переключилось на 2 форму. И когда нажал F5...

22
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
23.04.2021, 14:32
Python
1
button1.clicked.connect(form1.show)
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 9
23.04.2021, 14:34  [ТС]
а как прописать это более? как то поподробнее можно?
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 9
23.04.2021, 14:39  [ТС]
В архиве есть файлы от Qt и уже конвертированные в Python
Вложения
Тип файла: rar Python.rar (987.4 Кб, 21 просмотров)
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
23.04.2021, 16:28
adde7999, вам уже написали, читайте про сигналы и слоты в Qt.
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 9
23.04.2021, 17:45  [ТС]
DmFat, можно ссылки к этим постам?
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
24.04.2021, 11:02
Судя по содержимому этого архива, там не одна стартовая и 14 второстепенных, а, наоборот, 14 стартовых и одна второстепенная

Начинать имена модулей с цифры- плохо
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
24.04.2021, 11:24
Лучший ответ Сообщение было отмечено adde7999 как решение

Решение

Цитата Сообщение от adde7999 Посмотреть сообщение
как то поподробнее можно?
где-то в начале стартового файла
Python
1
from модуль_первой_формы_тот_который_1.py import Ui_TabWidget
где-то в конструкторе стартовой формы копируем из секции if __name__ == "__main__":
Python
1
2
3
4
tabWidget = QtGui.QTabWidget()
ui = Ui_TabWidget()
ui.setupUi(tabWidget)
self.p1.clicked.connect(tabWidget.show)
1
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 9
24.04.2021, 22:24  [ТС]
kapbepucm, да уже по запарке быстро написал 14, да названия писать цифрой плохо, это просто что бы понимать порядок нужных мне форм.

Добавлено через 1 минуту
kapbepucm, Завтра обязательно попробую и отпишусь

Добавлено через 2 часа 58 минут
kapbepucm, Смог прописать открытие нужной формы по нажатию кнопки.( Start.py>1-14.py)
Но теперь нужно сделать что бы при закрытии окна снова открывалась главная.(1-14.py>Start.py)
Пытался сделать таким же методом, но ничего не получается,хотя бы при нажатии стандартного красного крестика в правом вверхнем углу и форма закрывается, открывается снова главная в моем случае (Start.py)
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
26.04.2021, 09:27
после
Python
1
self.p1.clicked.connect(tabWidget.show)
добавить
Python
1
tabWidget.closed.connect(self.show)
только сигнала closed у QTabWidget нет, его нада сначала сделать
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 9
26.04.2021, 12:01  [ТС]
kapbepucm, это вариант в случае скрытия формы, а у меня главная форма именно закрывается методом
Python
1
2
self.p1.clicked.connect(tabWidget.show)
self.p1.clicked.connect(self.close)
Может выбрал и сложный вариант, могу переделать, но даже в случае скрытия как главная форма(Start.py), поймет что закрылась(1-14.py)
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
26.04.2021, 13:14
а если заменить
Python
1
self.p1.clicked.connect(self.close)
на
Python
1
self.p1.clicked.connect(self.hide)
По умолчанию close ведёт себя как hide и не должно прибивать форму, хотя, возможно, у python свои тараканы.
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 9
26.04.2021, 13:14  [ТС]
kapbepucm, знаю можно и так, но подумал лучше закрывать, попробую отпишусь
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
26.04.2021, 13:18
-при создании второстепенной формы передавать ей в качестве родителя стартовую форму
-во второстепенной форме отлавливать событие close и вызывать там parent().show()
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
26.04.2021, 13:37
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
import sys
from PySide2 import QtWidgets, QtGui
 
 
class Form1(QtWidgets.QDialog):
    def __init__(self, parent: QtWidgets.QWidget = None):
        QtWidgets.QDialog.__init__(self, parent)
        self.setWindowTitle("Form 1")
 
    def show(self) -> None:
        self.parent().hide()
        return QtWidgets.QDialog.show(self)
 
    def closeEvent(self, event: QtGui.QCloseEvent) -> None:
        self.parent().show()
        return QtWidgets.QDialog.closeEvent(self, event)
 
 
class Form2(QtWidgets.QDialog):
    def __init__(self, parent: QtWidgets.QWidget = None):
        QtWidgets.QDialog.__init__(self, parent)
        self.setWindowTitle("Form 2")
 
        if not parent:
            self.show()
 
 
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self, parent: QtWidgets.QWidget = None):
        QtWidgets.QMainWindow.__init__(self, parent)
 
        self.Form1 = Form1(self)
 
        self.menuBar().addAction("Open Form 1", self.Form1.show)
        self.menuBar().addAction("Open Form 2", self.openForm2Event)
 
        if not parent:
            self.show()
 
    def openForm2Event(self):
        self.hide()
        Form2(self).exec_()
        self.show()
 
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    main = MainWindow()
    sys.exit(app.exec_())
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 9
26.04.2021, 18:57  [ТС]
kapbepucm, мозги кипят, не могу понять куда приписать Closed
Прикреплю архив с файлами сейчас(для запуска надо открыть startp.py)
Может направите в нужное русло
Вложения
Тип файла: rar Python.rar (494.5 Кб, 4 просмотров)
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
27.04.2021, 07:25
adde7999, Тут бесполезно тебе что то объяснять, ты даже основ не знаешь и лезешь в гуй, советую начать обучаться с нуля.
0
0 / 0 / 0
Регистрация: 23.04.2021
Сообщений: 9
27.04.2021, 08:53  [ТС]
DmFat, основы я знаю, писать код обычной программы Python это одно а создавать gui, это уже слегка другая ветка.
По данной теме нету нормальных обьяснений в интернете ни в русском сегменте, ни в английском, как я должен понимать то что даже нигде нормально не описывается? Пишут код а как им пользоватся не обьясняют, я прошу обычного обьяснения а не помощи.
Спасибо kapbepucm, за обьяснение, хотя бы один метод перехода я понял.
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
27.04.2021, 08:57
adde7999, удали QDesigner и пиши руками, быстро станет понятно, что да как.

PySide6(2) Офф. сайт Примеры описание виджетов
0
 Аватар для kapbepucm
1566 / 739 / 321
Регистрация: 02.05.2020
Сообщений: 1,658
27.04.2021, 14:43
Лучший ответ Сообщение было отмечено adde7999 как решение

Решение

Согласен с DmFat, неоднократно наблюдаю ситуацию, когда qtdesigner мешает новичкам. Также советую на начальных этапах его не использовать.

Цитата Сообщение от adde7999 Посмотреть сообщение
kapbepucm, мозги кипят, не могу понять куда приписать Closed
В файле startp.py после строк
Python
1
2
3
4
5
tabWidget1 = QtGui.QTabWidget()
ui = Ui_TabWidget1()
ui.setupUi(tabWidget1)
Start.p1.clicked.connect(tabWidget1.show)
Start.p1.clicked.connect(JavaScript.hide)
добавим
Python
1
2
3
4
def customClose(event):
  JavaScript.show()
  event.accept()
tabWidget1.closeEvent = customClose
это позволит при закрытии первой формы открыть стартовую
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.04.2021, 14:43
Помогаю со студенческими работами здесь

Открытие и закрытие формы по нажатию
Задался вопросом компактного закрытия формы по щелчку. Пока писал вопрос, понял реализацию:) Надеюсь кому-нибудь будет полезным материал....

Открытие формы по нажатию кнопки
Всем привет! Подскажите мне пожалуйста обработчик кнопки, чтобы при её нажатии открывалась другая форма.

Открытие и закрытие формы по нажатию
Есть авторизация пользователя. Нужно что бы если верный пароль, то открывал форму 6, а форму 5 закрывал. Если после Form6.Show; дописать...

Открытие формы с отбором по нажатию кнопки
Всем привет. Можно ли сделать по нажатию такой отбор, чтобы при открытии формы были скрыты какие то элементы. Например у меня есть форма...

Открытие второй формы по нажатию на кнопку
Здраствуйте. Создаю форму, добавляю кнопку. Хочу чтобы после нажатия на эту кнопку открывалась форма №2. Кстати как добавить правельно...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru