Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/29: Рейтинг темы: голосов - 29, средняя оценка - 4.62
13 / 10 / 5
Регистрация: 11.10.2019
Сообщений: 290
PyQt5

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

11.11.2019, 18:25. Показов 6477. Ответов 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
963 / 718 / 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 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru