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

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

11.11.2019, 18:25. Показов 6405. Ответов 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru