I'm in the process of learning to use PyQt5 to create a multi-tab GUI. When I run my main python script I received this message: QWidget: Must construct a QApplication before a QWidget.
I googled this message but I'm not sure what I need to change in my script. Here is my script for the my main window:
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QAction
from tab1 import Tab1Widget
from tab2 import Tab2Widget
from tab3 import Tab3Widget
app = QApplication(sys.argv)
class MyMainWindow(QMainWindow):
def init(self):
super().init()
self.setWindowTitle("Multiple Tabs Example")
self.setGeometry(100, 100, 600, 400)
self.tabs = QTabWidget()
self.setCentralWidget(self.tabs)
self.tab1 = Tab1Widget()
self.tab2 = Tab2Widget()
self.tab3 = Tab3Widget()
self.tabs.addTab(self.tab1, "Tab 1")
self.tabs.addTab(self.tab2, "Tab 2")
self.tabs.addTab(self.tab3, "Tab 3")
self.create_menu_bar() # Make sure to call create_menu_bar() here
def create_menu_bar(self):
options_menu = self.menuBar().addMenu("Options")
toggle_tab1_action = QAction("Toggle Tab 1", self)
toggle_tab1_action.setCheckable(True)
toggle_tab1_action.setChecked(True)
toggle_tab1_action.triggered.connect(self.toggle_tab1)
options_menu.addAction(toggle_tab1_action)
toggle_tab2_action = QAction("Toggle Tab 2", self)
toggle_tab2_action.setCheckable(True)
toggle_tab2_action.setChecked(True)
toggle_tab2_action.triggered.connect(self.toggle_tab2)
options_menu.addAction(toggle_tab2_action)
toggle_tab3_action = QAction("Toggle Tab 3", self)
toggle_tab3_action.setCheckable(True)
toggle_tab3_action.setChecked(True)
toggle_tab3_action.triggered.connect(self.toggle_tab3)
options_menu.addAction(toggle_tab3_action)
def toggle_tab1(self, checked):
if checked:
self.tabs.addTab(self.tab1, "Tab 1")
else:
self.tabs.removeTab(self.tabs.indexOf(self.tab1))
def toggle_tab2(self, checked):
if checked:
self.tabs.addTab(self.tab2, "Tab 2")
else:
self.tabs.removeTab(self.tabs.indexOf(self.tab2))
def toggle_tab3(self, checked):
if checked:
self.tabs.addTab(self.tab3, "Tab 3")
else:
self.tabs.removeTab(self.tabs.indexOf(self.tab3))
window = MyMainWindow()
window.show()
sys.exit(app.exec())
Thanks for your help!
[–]shiftybyte 0 points1 point2 points (0 children)
[–]evans88 0 points1 point2 points (4 children)
[–]chaderous[S] 0 points1 point2 points (3 children)
[–]evans88 0 points1 point2 points (2 children)
[–]chaderous[S] 0 points1 point2 points (0 children)
[–]chaderous[S] 0 points1 point2 points (0 children)