13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
PyQt5

Открытие окна из другого файла

11.11.2019, 18:25. Показов 6485. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый вечер форумчане. Вопрос про открытие виджета из другого файла. Допустим есть 2 файла window.py и okno2.py. По нажатию кнопки из window.py открыть okno2.py. Сделал как думаю,но не работает. Если делать в одном файле которые закомменитровал создание виджета по нажатию кнопки,то работает,а хотелось бы открывать из другого файла.


пример кода из window.py ( закомментировал код создания виджета,этот виджет хочу получить из okno2.py)
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
# -*- coding: utf-8 -*-
from PyQt5 import QtWidgets, QtCore
 
 
class MyWindow(QtWidgets.QWidget):
    def __init__(self, parent=None):
        QtWidgets.QWidget.__init__(self, parent)
        self.label = QtWidgets.QLabel("Привет, мир!")
        self.label.setAlignment(QtCore.Qt.AlignHCenter)
        self.btnQuit = QtWidgets.QPushButton("&Закрыть окно")
        self.okno = QtWidgets.QPushButton("открыть окно")
        self.vbox = QtWidgets.QVBoxLayout()
        self.vbox.addWidget(self.label)
        self.vbox.addWidget(self.btnQuit) 
        self.vbox.addWidget(self.okno)
        self.setLayout(self.vbox)
        self.btnQuit.clicked.connect(app.quit)
        self.okno.clicked.connect(self.okohko)
 
 
    def okohko(self):
        import okno2
 
        self.test=okno2.win()
        self.test.show()
        
##        self.win1=QtWidgets.QWidget()
##        self.win1.setWindowTitle("новое окно")
##        self.win1.resize(400,400)
##        self.win1.show()
 
 
 
if __name__ == "__main__":
    import sys  
    app = QtWidgets.QApplication(sys.argv)
    window = MyWindow()     # Создаем экземпляр класса
    window.setWindowTitle("ООП-стиль создания окна")
    window.resize(300,70)
    window.show()           # отображаем окно
    sys.exit(app.exec_())   # Запускаем цикл обработки событий


А вот код в okno2.py
Python
1
2
3
4
5
6
7
import sys
from PyQt5.QtWidgets import QApplication, QWidget
 
class win(QWidget):
    def __init__(self):
        self.setWindowTitle("новое окно")
        self.resize(400,400)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2019, 18:25
Ответы с готовыми решениями:

Скрытие окна и открытие другого в PyQt, как сделать?
Есть проблемка: class MainWindow(QtWidgets.QMainWindow): def __init__(self): super().__init__() ...

Открытие одного окна из другого?
kak is okna 'aaa', otkritogo metodom (window.open), otkrit novoe okno 'bbb'? window.open('') ne rabotaet,otkrivaet location v etom ze...

Открытие файлов из другого окна
У меня возникла одна проблема: я создал окно, в котором пользователь создаёт файл (вводит название, например), а в другом окне...

2
964 / 719 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
12.11.2019, 20:01
Цитата Сообщение от Сергей225 Посмотреть сообщение
def okohko(self):
        import okno2
from okno2 import win
0
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
12.11.2019, 20:59  [ТС]
Решил проблему. Можно закрывать тему. Может кому надо,кто работает из нескольких файлов.Коротко тогда выслал.Чуть подробнее теперь.

В главном файле
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
import sip
import sys
from PyQt5 import QtCore, QtWidgets, QtCore, QtGui
from PyQt5.QtWidgets import QMessageBox
 
 
class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        QtWidgets.QMainWindow.__init__(self)
        self.setMinimumSize(QtCore.QSize(300, 180))
        self.setWindowTitle("Выберите пункт(Enter-выбор,Esc-отклонить)") 
        ico = QtGui.QIcon("icon.ico")
        self.setWindowIcon(ico)           # Значок для окна
        
        # Местоположение окна на экране по центру на точность
        desktop = QtWidgets.QApplication.desktop()
        # Минимальные размеры окна
        self.resize(300,180)
        x = (desktop.width() - self.frameSize().width())    //2
        y = (desktop.height() - self.frameSize().height())  //2
        self.move(x,y)
        
        button1 = QtWidgets.QPushButton('1. Гос. реестр предельных цен', self)
        button2 = QtWidgets.QPushButton('2. Гос. реестр ЛС', self)
        
        #Зададим стили
        button1.setStyleSheet('QPushButton{font-size:14px; font:bold}')
        button2.setStyleSheet('QPushButton{font-size:14px; font:bold}')
        
        button1.clicked.connect(self.lp)
        button1.resize(250, 50)
        button1.move(25, 30)
        button2.clicked.connect(self.grls)
        button2.resize(250, 50)
        button2.move(25, 90)
 
 
 
    def lp(self):
        self.okno=win_lp()
        self.okno.show()
        
        
    def grls(self):
        self.okno=win_grls()
        self.okno.show()
 
 
 
#Файл lp
class win_lp(QtWidgets.QMainWindow):
    def __init__(self,parent=None):
        super().__init__(parent, QtCore.Qt.Window)
        import lp
        self.win = lp.MyWindow()
        self.win.main(self)
 
 
#Файл grls
class win_grls(QtWidgets.QMainWindow):
    def __init__(self,parent=None):
        super().__init__(parent, QtCore.Qt.Window)
        import grls
        self.win = grls.MyWindow()
        self.win.main(self)        
        
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    mainWin = MainWindow()
    mainWin.show()                     
    sys.exit( app.exec_() )
А во втором так(lp.py) Также и для grls.py
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
import sys
from PyQt5 import Qt, QtCore, QtGui, QtWidgets, uic 
from PyQt5.QtWidgets import QMessageBox
import connection
 
 
class MyWindow(QtWidgets.QMainWindow):
 
    def main(self, Form):
 
        desktop = QtWidgets.QApplication.desktop()
        # Минимальные размеры окна
        Form.resize(desktop.width(),desktop.height())
        # Указываем заголовок
        Form.setWindowTitle("Лекарственные препараты") 
        # Местоположение окна на экране по центру на точность
        x = (desktop.width() - Form.frameSize().width())    //2
        y = (desktop.height() - Form.frameSize().height())  //2
        Form.move(x,y)
        
        #Создадим таблицу
        self.table = QtWidgets.QTableWidget(Form)
 
......прочий длинный код
 
if __name__ == "__main__":
    app = QtWidgets.QApplication(sys.argv)
    Form = QtWidgets.QMainWindow()
    window = MyWindow()
    window.main(Form)
    Form.show()
    sys.exit(app.exec_())
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
12.11.2019, 20:59
Помогаю со студенческими работами здесь

Открытие окна из другого проекта
У меня есть окно WPF с кнопкой "Вход" при нажатии на нее должно открыться Окно WPF другого проекта Кто может скинуть какие нибудь...

Открытие одного окна и закрытие другого
Ребят помогите, программа должна закрывать одно окно и открывать другое, но программа выводит ошибку Вот класс с контроллером: ...

Открытие другого окна при сабмите
вобчем есть такое: <form name="frm"> </form> <a href="" onClick="document.frm.submit();"> и собсна сам вопрос: можно ли сделать...

Открытие приложения внутри окна другого
Здравствуйте, уважаемые посетители форума cyberforum. Мне требуется открыть стороннее приложение в окне "моего". ...

Открытие другого окна, без переключения на него
Добрый вечер! Тема данного вопроса наверняка уже давно изъезжена, но тем не менее я не смог найти ответа... Задача состоит в следующем:...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru