Форум сайта python.su
0
Есть два класса со своими методами, что при вызове одного, что при вызове другого (2 и 3) открывается свой GUI.
В основном коде вызывается функция (main) которая отображает GUI с двумя кнопками, при нажатии одной вызывается один класс (2), при нажатии другой другой (3).
И тут и появилась странная проблема, в которой никак не могу разобраться:
Из основного GUI (1) вызывается класс (2) и отображается другой GUI, а при нажатии на другую кнопку, класс выполняется (3), но ничего графически не отображается, просто завершается класс.
При этом, если по-умолчанию при старте программы, просто сразу вызывать класс (3), то тогда GUI отображается.
Отредактировано gmaksim (Сен. 7, 2017 14:33:13)
Офлайн
0
Схематично примерно так.
Прикреплённый файлы:
1.png (23,0 KБ)
Офлайн
0
Боже, какой же “сложный” вопрос, что даже местные тролли не снизошли до шуток!
Ужас.
Офлайн
186
Грех смеяться над убогими… А если серьёзно, то вместо того что-бы писать про окна “1”, “2”, “3” и картинку надо было код выложить. Без него никто тратить время не будет.
Офлайн
294
gmaksimне удержался
Есть два класса…
[code python][/code]
Офлайн
0
RodegastТакое огромное ЧСВ развилось после освоения Python или вы так всю жизнь страдаете
Грех смеяться над убогими…
?RodegastДа я понимаю, но код ушел за тысячу строк (не думаю что кто-то будет тут сидеть и изучать его “за так”) и реализация задач выполнена скорее всего не лучшим образом, поэтому мой вопрос был больше к теоретической части и возможно у кого-то была схожая проблема, так сказать подвели бы к мысли.
А если серьёзно, то вместо того что-бы писать про окна “1”, “2”, “3” и картинку надо было код выложить. Без него никто тратить время не будет.
Офлайн
294
gmaksimТут как раз дело в реализации, выкинте из кода все лишнее, потому как в теории как раз все работает..
мой вопрос был больше к теоретической части и возможно у кого-то была схожая проблема, так сказать подвели бы к мысли.
from PyQt4 import QtCore,QtGui import sys class Test(QtGui.QMainWindow): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('...test') self.show() class Begin(QtGui.QMainWindow): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('BEGIN.....') self.show() class MyWindow(QtGui.QWidget): def __init__(self): super(MyWindow, self).__init__() btn1=QtGui.QPushButton(self, text='test') btn1.clicked.connect(self.test) btn2=QtGui.QPushButton(self, text='begin') btn2.clicked.connect(self.begin) self.grid = QtGui.QGridLayout() self.setLayout(self.grid) self.grid.addWidget(btn1,0,0) self.grid.addWidget(btn2,0,1) self.show() def test(self): self.a = Test() def begin(self): self.a = Begin() if __name__ == '__main__': app1 = QtGui.QApplication(sys.argv) window = MyWindow() sys.exit(app1.exec())
[code python][/code]
Отредактировано PEHDOM (Сен. 12, 2017 16:04:16)
Офлайн
0
Если выдернуть из контекста, то примерно так:
from PyQt5.QtWidgets import \ (QWidget, QPushButton, QApplication, QLabel, QComboBox, QLineEdit, QGridLayout, QMessageBox, QListWidget) from PyQt5.QtCore import Qt class one(QWidget): def __init__(self): super().__init__() # ... self.start() def start(self): self.layout = QGridLayout() self.setLayout(self.layout) self.setGeometry(100, 100, 600, 500) # ... self.show() class two(QWidget): def __init__(self): super().__init__() # ... self.start() def start(self): self.layout = QGridLayout() self.setLayout(self.layout) self.setGeometry(100, 100, 600, 500) # ... self.show() def main(): app = QApplication(sys.argv) def start1(): s1 = one() def start2(): s2 = two() root = QWidget() root.layout = QGridLayout() root.setLayout(root.layout) root.setGeometry(100, 100, 600, 500) # ... root.butt = QPushButton(text='start 1') root.butt.clicked.connect(start1) root.layout.addWidget(root.butt, 1, 1) root.butt = QPushButton(text='start 2') root.butt.clicked.connect(start2) root.layout.addWidget(root.butt, 2, 1) root.show() sys.exit(app.exec_()) if __name__ == "__main__": main()
Отредактировано gmaksim (Сен. 12, 2017 16:14:31)
Офлайн
0
PEHDOMСейчас изучу, спасибо.
Тут как раз дело в реализации, выкинте из кода все лишнее, потому как в теории как раз все работает..
вот нарыл у себя пример На котором я чтото обьснял Куруму: тоже два разных класса которые вызываются из одного главного окна:
Офлайн
294
gmaksimУ меня вообще ни одно окно не создаеться из вашего примера.
Если выдернуть из контекста, то примерно так:
[code python][/code]
Отредактировано PEHDOM (Сен. 12, 2017 16:22:45)
Офлайн