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

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

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

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

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

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

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

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

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

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

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

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
2741 / 2340 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
31.01.2016, 20:06 3
Все как бы изи)
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 4
Цитата Сообщение от alex925 Посмотреть сообщение
Все как бы изи)
Да вот как неделю пытаемся что-то учить и понимать. У вас так красиво получается! Я вот по книжечкам учусь, может подскажите чего для ускорения процесса? ( как выделить, чтобы отправило " не по теме" ?)
0
2741 / 2340 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
31.01.2016, 20:49 5
Цитата Сообщение от Kroshe4ka Посмотреть сообщение
( как выделить, чтобы отправило " не по теме" ?)
Кнопочка off, там где вставляются теги выделяющие текст как код.
Цитата Сообщение от Kroshe4ka Посмотреть сообщение
Да вот как неделю пытаемся что-то учить и понимать.
У тебя все впереди. Вообще gui я бы в последнюю очередь учил. Во 1 это совсем отдельная тема в программировании, во 2 сначала нужно с алгоритмизацией и общими моментами ознакомиться.
Цитата Сообщение от Kroshe4ka Посмотреть сообщение
может подскажите чего для ускорения процесса?
Я разбирался с PyQt по статьям из сети и книге Прохоренка. Кстати по книге Прохоренка только c gui знакомиться можно, в остальном книга паршивейшая, это я так, на всякий случай.
0
Kroshe4ka
31.01.2016, 20:56
  #6

Не по теме:

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

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

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

Не по теме:

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

0
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 27
31.01.2016, 23:12  [ТС] 9
Спс за код, но он снова на 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
2741 / 2340 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
31.01.2016, 23:18 10
Цитата Сообщение от kvins1 Посмотреть сообщение
что не работает в 5,
Да, я не заметил, что тебе для пятерки надо. Ну я ей не пользуюсь, по этому ничем помочь не могу.
Цитата Сообщение от kvins1 Посмотреть сообщение
PS: я понял как ваш код запустить надо было в 5 версии, но при нажатии приложение падает.
Нее, этот код для pyqt4, он не будет работать на pyqt5.
1
0 / 0 / 0
Регистрация: 10.03.2011
Сообщений: 27
31.01.2016, 23:21  [ТС] 11
А что очень сильно изменился код модуля ?
что нельзя похожие коды использовать и какую версию python вы используете сейчас ??
0
2741 / 2340 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
31.01.2016, 23:29 12
kvins1, импроты вроде только меняются. Я на пятерку не перехожу потому, по факту нет ни каких супер крутых плюшек, которые заставили перейти бы. Новое, конечно есть, но так как оно мне не надо, то я в это и не вникаю.

Цитата Сообщение от kvins1 Посмотреть сообщение
какую версию python вы используете сейчас
На ноуте 3.5, на компе 3.4.3
0
2741 / 2340 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
02.02.2016, 14:03 13
Лучший ответ Сообщение было отмечено 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  [ТС] 14
Спс пригодится, забавно что я вчера тоже ночью все таки смог сделать второе окно и хотел тоже код выложить, так и сделаю =)

терь эта тема будет закрыта, правда я еще не решил проблему с передачей данных во второе окно, так как открывается окошко через 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
2741 / 2340 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
02.02.2016, 14:40 15
Цитата Сообщение от 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  [ТС] 16
Цитата Сообщение от alex925 Посмотреть сообщение
Да там разница была в 1 импорте и все, делать нечего....
Спс, просто piton я учу больше для себя чем для работы, основная это web php и движки типа битрикс и вп. Мб когда нить и программы буду делать на питоне на платной основе, а щас просто учусь и именно интересует декстопные с интеграцией с веб сайтами на php в будущем
0
alex925
02.02.2016, 14:53     Kак создавать по нажатию на кнопку второе окно
  #17

Не по теме:

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

0
02.02.2016, 14:53
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.02.2016, 14:53
Помогаю со студенческими работами здесь

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

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

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

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

Нужно сделать кнопку которая при нажатии будет создавать окно в windows form
Нужно создать кнопку которая будет при нажатии читать (цену) число если оно будет больше ровно...

По нажатию на кнопку открыть окно шириной 100 и высотой 200
Создайте страницу, на которой расположите кнопку. По нажатию на кнопку открыть окно шириной 100 и...

Kак перейти из одной страницы JSP на другую по нажатию кнопки?
Помогите плиз!Kак перейти из одной страницы JSP на другую по нажатию кнопки???? Взаранее спасибо!


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru