Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/65: Рейтинг темы: голосов - 65, средняя оценка - 4.88
 Аватар для Luca Brasi
892 / 204 / 55
Регистрация: 06.11.2015
Сообщений: 2,288
Записей в блоге: 2

Вызов нового окна из другого окна

17.03.2016, 16:56. Показов 12584. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Хочу реализовать следующее.

При нажатии на кнопку "Добавить профиль в БД" вызыв второго окна. Окно вызывается, только внутри первого окна.

Наверно можно подстроиться под ситуацию, скрывать ранее существовавшее содержимое и пр., но меня это весьма не устраивает. Хотелось бы два отдельных окна.
Основной файл
pyqt
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
class Main(QtGui.QWidget, main_view.Ui_Form):
 
    def __init__(self, parent=None):
 
        QtGui.QWidget.__init__(self,parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.handleButton)
        self.window2 = None
 
    def handleButton(self):
 
        if self.window2 is None:
            self.window2 = Add(self)
        self.window2.show()
       
 
class Add(QtGui.QWidget, add_view.Ui_Form):
 
    def __init__(self, parent=None):
 
        QtGui.QWidget.__init__(self,parent)
        self.setupUi(self)
        self.connect(self.pushButton,QtCore.SIGNAL('clicked()'),
                     self.printInput)
        self.addToList()
 
 
    def addToList(self):
 
        self.crud=Crud('localhost','andrew','pass','verses')
        results=self.getRow('author','verses_list')
        self.crud.closeConnection()
 
        self.listWidget.setSelectionMode(
            QtGui.QAbstractItemView.MultiSelection)
        for x in results:
            self.listWidget.addItems(x)
 
 
    def printInput(self):
 
        print(self.lineEdit.text())
        print(self.lineEdit_2.text())
        print(self.lineEdit_3.text())
        print(self.lineEdit_4.text())
        items=self.listWidget.selectedItems()
        self.selectedItems=[]
        for x in items:
            self.selectedItems.append(x.text())
        print(self.selectedItems)
 
    def getRow(self,row,query):
 
        self.crud.sql = ('SELECT DISTINCT {0} FROM {1} ORDER BY {0}'.format(row,query))
        data=self.crud.readAct()
 
        return data
 
app = QtGui.QApplication(sys.argv)
icon=Main()
icon.show()
app.exec_()

Вот исходники, если что source.zip
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
17.03.2016, 16:56
Ответы с готовыми решениями:

Дублирование главного окна при открытии нового окна
У меня есть основное окно типа QWidget, при нажатии на кнопку открывается окно типа QDialog. Но вместе с диалоговым окном открывается и...

Парсинг нового открытого окна
На странице элемент, при клике на который открывается новое окно. В исходном коде нет ссылки на это окно(там javascript). Как мне начать...

Вызов нового окна с роликом из другого
На локальном диске в одной папке находится два ролика 1.swf и 2.swf. Как при нажатии на кнопку в первом ролике в отдельном окне запустить...

5
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.03.2016, 17:07
Лучший ответ Сообщение было отмечено Luca Brasi как решение

Решение

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 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_())
0
 Аватар для Luca Brasi
892 / 204 / 55
Регистрация: 06.11.2015
Сообщений: 2,288
Записей в блоге: 2
17.03.2016, 21:28  [ТС]
alex925, шикарно. Подправил, теперь все работает. Откровенно говоря мне этот аргумент не очень понятен.
Python
1
QtCore.Qt.Window
Это то самое отдельное окно?
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
17.03.2016, 21:41
Luca Brasi, http://pyqt.sourceforge.net/Do... ml#QWidget
http://pyqt.sourceforge.net/Do... wType-enum
0
 Аватар для Luca Brasi
892 / 204 / 55
Регистрация: 06.11.2015
Сообщений: 2,288
Записей в блоге: 2
17.03.2016, 21:56  [ТС]
alex925, уже разобрался
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
21.03.2016, 16:58
Или наследоваться от QDialog
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2016, 16:58
Помогаю со студенческими работами здесь

Вызов окна из другого окна. Паттерн MVVM
тут ламмерский вопрос) есть 2 окна со своими вьюмодельс. в первом окне есть кнопка, по которой должно открываться второе окно. как...

Вызов из одного проекта окна из другого
Объясните как чайнику. Как вызвать из одного проекта запуск другого? Где что указать?

Вызов метода в UserControl из другого окна Window
Добрый день! Изучаю связку С# + WPF. И сейчас столкнулся с вот какой проблемой. Есть Главное окно MainWindow c contentcontrol. using...

Как заблокировать вызов нового дочернего окна пока не закрыто предыдущее в MDI parent form
Привет ребятушки!!! Не подскажете, как заблокировать открытие дочернего окна в родительском, если одно уже открыто. Я имею ввиду...

PyQt5 При запуске окна из другого окна, методы класса не работают
Не знаю, как грамотно объяснить свою проблему, но предполагаю, что она точно в открытии нового окна по нажатию кнопки в другом окне. ...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru