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

Kак создавать по нажатию на кнопку второе окно

31.01.2016, 14:07. Показов 28603. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Может кто подскажет как создавать по нажатию на кнопку второе окно, как я тока не пробывал у меня приложение ломалось, да вообще я новичок.

И еще если возможно, то как передавать параметры второму окну ?

Видел кучу примеров на PyQt4 но они все не работают на новой версии.
работаю в python3
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.01.2016, 14:07
Ответы с готовыми решениями:

Создавать textBox по нажатию на кнопку
Народ, помогите пожалуйста. Нужен код, который по нажатию на баттон будет добавлять textBox?? спасибо большое!

возникшая проьлема. Почему не открывается второе окно при нажатии на кнопку?
import sys from MAIN import Ui_MainWindow from PyQt5 import QtCore, QtGui,QtWidgets from dialog3 import Ui_Dialog3 class...

Закрыть окно WPF по нажатию на кнопку
Я создавал плагин используя паттерн MVVM. Мне нужно закрыть сохранить и закрыть форму. Как мне это можно сделать ...

16
0 / 0 / 0
Регистрация: 30.01.2016
Сообщений: 19
31.01.2016, 18:58
Сами только начали изучать, попробуй так:

Python
1
2
3
4
5
6
7
8
9
   QtCore.QObject.connect(self.button, QtCore.SIGNAL('clicked()'), self.editLine)
 
    def editLine(self):
        
        global window
      
        window = QtGui.QWidget( )    
        window.resize(300, 50)          
        window.show()
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
31.01.2016, 20:06
Все как бы изи)
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
"""
Пример создания дочернего окна из основной формы
"""
import sys
 
from PyQt4 import QtGui, QtCore
 
 
class SecondWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        # Передаём ссылку на родительский элемент и чтобы виджет
        # отображался как самостоятельное окно указываем тип окна
        super().__init__(parent, QtCore.Qt.Window)
        self.build()
 
    def build(self):
        self.mainLayout = QtGui.QVBoxLayout()
 
        self.buttons = []
        for i in range(5):
            but = QtGui.QPushButton('button {}'.format(i), self)
            self.mainLayout.addWidget(but)
            self.buttons.append(but)
 
        self.setLayout(self.mainLayout)
 
 
class MainWindow(QtGui.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.secondWin = None
        self.build()
 
    def build(self):
        self.mainLayout = QtGui.QVBoxLayout()
 
        self.lab = QtGui.QLabel('simple text', self)
        self.mainLayout.addWidget(self.lab)
 
        self.but1 = QtGui.QPushButton('open window', self)
        self.but1.clicked.connect(self.openWin)
        self.mainLayout.addWidget(self.but1)
 
        self.setLayout(self.mainLayout)
 
    def openWin(self):
        if not self.secondWin:
            self.secondWin = SecondWindow(self)
        self.secondWin.show()
 
 
if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())
Добавлено через 41 секунду
Цитата Сообщение от Kroshe4ka Посмотреть сообщение
global window
Забудь о таком ключевом слове как global это дичайший быдлокод, который потом принесет тонну проблем.
1
0 / 0 / 0
Регистрация: 30.01.2016
Сообщений: 19
31.01.2016, 20:26
Цитата Сообщение от alex925 Посмотреть сообщение
Все как бы изи)
Да вот как неделю пытаемся что-то учить и понимать. У вас так красиво получается! Я вот по книжечкам учусь, может подскажите чего для ускорения процесса? ( как выделить, чтобы отправило " не по теме" ?)
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
31.01.2016, 20:49
Цитата Сообщение от Kroshe4ka Посмотреть сообщение
( как выделить, чтобы отправило " не по теме" ?)
Кнопочка off, там где вставляются теги выделяющие текст как код.
Цитата Сообщение от Kroshe4ka Посмотреть сообщение
Да вот как неделю пытаемся что-то учить и понимать.
У тебя все впереди. Вообще gui я бы в последнюю очередь учил. Во 1 это совсем отдельная тема в программировании, во 2 сначала нужно с алгоритмизацией и общими моментами ознакомиться.
Цитата Сообщение от Kroshe4ka Посмотреть сообщение
может подскажите чего для ускорения процесса?
Я разбирался с PyQt по статьям из сети и книге Прохоренка. Кстати по книге Прохоренка только c gui знакомиться можно, в остальном книга паршивейшая, это я так, на всякий случай.
0
31.01.2016, 20:56

Не по теме:

Цитата Сообщение от alex925 Посмотреть сообщение
Я разбирался с PyQt по статьям из сети и книге Прохоренка.
Каждый день ее читаю( многое так и не понятно), аналогов больше нету, только если на английском в офф библиотеках. Кстати, а что self.build() в коде делает?

0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
31.01.2016, 21:00
Создает 5 кнопок

Добавлено через 30 секунд
Цитата Сообщение от Kroshe4ka Посмотреть сообщение
многое так и не понятно
Потому что как я уже сказал, рано заниматься этим ещё.
0
31.01.2016, 21:11

Не по теме:

Цитата Сообщение от alex925 Посмотреть сообщение
Создает 5 кнопок
Спасибо, красиво очень кодите, очень понравилось =)

0
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 27
31.01.2016, 23:12  [ТС]
Спс за код, но он снова на 4 версии, что не работает в 5, хоть переходи на 4ку ((

А примеры с PyQt4, видел на бурж форумах, а с новой версией нече нету (

Вот какую ошибку выдает если, просто изменить импорт с 4 на 5
Python
1
2
    class SecondWindow(QtGui.QWidget):
AttributeError: 'module' object has no attribute 'QWidget'
Добавлено через 7 минут
PS: я понял как ваш код запустить надо было в 5 версии, но при нажатии приложение падает.

Просто в 5 версии, например код
Python
1
class SecondWindow(QtGui.QWidget):
ставится без названия модуля
Python
1
class SecondWindow(QWidget):
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
31.01.2016, 23:18
Цитата Сообщение от kvins1 Посмотреть сообщение
что не работает в 5,
Да, я не заметил, что тебе для пятерки надо. Ну я ей не пользуюсь, по этому ничем помочь не могу.
Цитата Сообщение от kvins1 Посмотреть сообщение
PS: я понял как ваш код запустить надо было в 5 версии, но при нажатии приложение падает.
Нее, этот код для pyqt4, он не будет работать на pyqt5.
1
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 27
31.01.2016, 23:21  [ТС]
А что очень сильно изменился код модуля ?
что нельзя похожие коды использовать и какую версию python вы используете сейчас ??
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
31.01.2016, 23:29
kvins1, импроты вроде только меняются. Я на пятерку не перехожу потому, по факту нет ни каких супер крутых плюшек, которые заставили перейти бы. Новое, конечно есть, но так как оно мне не надо, то я в это и не вникаю.

Цитата Сообщение от kvins1 Посмотреть сообщение
какую версию python вы используете сейчас
На ноуте 3.5, на компе 3.4.3
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
02.02.2016, 14:03
Лучший ответ Сообщение было отмечено kvins1 как решение

Решение

kvins1, Вот кстати версия кода, которая будет работать на pyqt5
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
import sys
 
from PyQt5 import QtWidgets, QtCore
 
 
class SecondWindow(QtWidgets.QWidget):
    def __init__(self, parent=None):
        # Передаём ссылку на родительский элемент и чтобы виджет
        # отображался как самостоятельное окно указываем тип окна
        super().__init__(parent, QtCore.Qt.Window)
        self.build()
 
    def build(self):
        self.mainLayout = QtWidgets.QVBoxLayout()
 
        self.buttons = []
        for i in range(5):
            but = QtWidgets.QPushButton('button {}'.format(i), self)
            self.mainLayout.addWidget(but)
            self.buttons.append(but)
 
        self.setLayout(self.mainLayout)
 
 
class MainWindow(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.secondWin = None
        self.build()
 
    def build(self):
        self.mainLayout = QtWidgets.QVBoxLayout()
 
        self.lab = QtWidgets.QLabel('simple text', self)
        self.mainLayout.addWidget(self.lab)
 
        self.but1 = QtWidgets.QPushButton('open window', self)
        self.but1.clicked.connect(self.openWin)
        self.mainLayout.addWidget(self.but1)
 
        self.setLayout(self.mainLayout)
 
    def openWin(self):
        if not self.secondWin:
            self.secondWin = SecondWindow(self)
        self.secondWin.show()
 
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())
1
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 27
02.02.2016, 14:17  [ТС]
Спс пригодится, забавно что я вчера тоже ночью все таки смог сделать второе окно и хотел тоже код выложить, так и сделаю =)

терь эта тема будет закрыта, правда я еще не решил проблему с передачей данных во второе окно, так как открывается окошко через button кнопку которая не имеет параметры


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
import sys
from PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
 
 
class Example(QWidget):
 
    def __init__(self):
        super().__init__()
 
        self.initUI()
 
 
    def initUI(self):
        self.btn = QPushButton('Button', self) 
        self.btn.setStyleSheet('background-color: green;')  
        self.btn.clicked.connect(self.buts)
        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Icon')
        self.setWindowIcon(QIcon('web.png'))
 
        self.show()
 
    def buts(self):
        self.ex3 = Example2()
 
 
class Example2(QWidget):
 
    def __init__(self):
        super().__init__()
 
        self.initUI()
 
 
    def initUI(self):
 
        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('Icon')
        self.setWindowIcon(QIcon('web.png'))
 
        self.show()
 
 
if __name__ == '__main__':
 
    app = QApplication(sys.argv)
    ex = Example()
 
    sys.exit(app.exec_())
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
02.02.2016, 14:40
Цитата Сообщение от kvins1 Посмотреть сообщение
правда я еще не решил проблему с передачей данных во второе окно
Нет ни какой проблемы, это элементарно.
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
import sys
 
from PyQt5 import QtWidgets, QtCore
 
 
class SecondWindow(QtWidgets.QWidget):
    def __init__(self, button_count, parent=None):
        # Передаём ссылку на родительский элемент и чтобы виджет
        # отображался как самостоятельное окно указываем тип окна
        super().__init__(parent, QtCore.Qt.Window)
        self.build(button_count)
 
    def build(self, count):
        self.mainLayout = QtWidgets.QVBoxLayout()
 
        self.buttons = []
        for i in range(count):
            but = QtWidgets.QPushButton('button {}'.format(i), self)
            self.mainLayout.addWidget(but)
            self.buttons.append(but)
 
        self.setLayout(self.mainLayout)
 
 
class MainWindow(QtWidgets.QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.secondWin = None
        self.build()
 
    def build(self):
        self.mainLayout = QtWidgets.QVBoxLayout()
 
        self.lab = QtWidgets.QLabel('simple text', self)
        self.mainLayout.addWidget(self.lab)
 
        self.but1 = QtWidgets.QPushButton('open window', self)
        self.but1.clicked.connect(self.openWin)
        self.mainLayout.addWidget(self.but1)
 
        self.setLayout(self.mainLayout)
 
    def openWin(self):
        if not self.secondWin:
            self.secondWin = SecondWindow(2, self)
        self.secondWin.show()
 
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

Цитата Сообщение от kvins1 Посмотреть сообщение
вчера тоже ночью все таки смог сделать
Да там разница была в 1 импорте и все, делать нечего....
2
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 27
02.02.2016, 14:48  [ТС]
Цитата Сообщение от alex925 Посмотреть сообщение
Да там разница была в 1 импорте и все, делать нечего....
Спс, просто piton я учу больше для себя чем для работы, основная это web php и движки типа битрикс и вп. Мб когда нить и программы буду делать на питоне на платной основе, а щас просто учусь и именно интересует декстопные с интеграцией с веб сайтами на php в будущем
0
02.02.2016, 14:53

Не по теме:

Цитата Сообщение от kvins1 Посмотреть сообщение
основная это web php и движки типа битрикс и вп.
мрак и ужас

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

Как сделать всплывающее окно по нажатию на кнопку?
в окне должна появиться форма подписки,а так ее быть не должно. <!DOCTYPE html> <html lang="ru"> <head> ...

Как по нажатию на кнопку сделать всплівающее окно?
У меня есть код Pop-up,но моя кнопка вмонирована в шаблон Также у меня есть шорт код от плагина Contact form 7 его то я в и...

По нажатию на кнопку открывать окно с заданными параметрами
Помогите, пожалуйста, никак не получаетса сделать На html-странице размещены две кнопки. При нажатии на кнопку No1 открывается новое...

Как вызвать диалоговое окно по нажатию на кнопку
Вот такой вопрос:я в форму закинул диалоговое окно,и хочу чтоб при нажатии на кнопку мне его выдавало,как это сделать подскажите пожалуйста?

Как сделать чтобы при нажатии на кнопку открывалось второе диалоговое окно? (MFC)
Как сделать чтобы при нажатии на кнопку открывалось второе диалоговое окно ( в MFC )??


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru