Reputation: 73
Trying to make my first PyQt5 application and when I click my button, the code runs but my options window doesn't appear on the screen.
#!/usr/bin/env python3
import sys
from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplication, QLabel, QPushButton, QVBoxLayout
from PyQt5.QtGui import QPixmap, QIcon
from PyQt5.QtCore import QSize
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.initUI()
def initUI(self):
self.setWindowTitle('Main Window')
label = QLabel(self)
pixmap = QPixmap('background.png')
label.setPixmap(pixmap)
self.resize(pixmap.width(), pixmap.height())
self.initButtons()
self.center()
self.show()
def initButtons(self):
self.button = QPushButton('', self)
# button style things...
self.button.clicked.connect(self.handleButton)
self.dialog = OptionsWindow(self)
def handleButton(self):
self.dialog.show()
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
class OptionsWindow(QWidget):
def __init__(self, parent=None):
super(OptionsWindow, self).__init__(parent)
self.setWindowTitle("Options")
self.resize(200,200)
self.center()
self.show()
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def main():
app = QApplication(sys.argv)
main = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Am I missing something? I've tried various things like removing the 'center' functionality, removing the background image, etc. but still get no second window on button press
Upvotes: 0
Views: 719
Reputation: 13641
Try it:
import sys
from PyQt5.QtWidgets import (QWidget, QDesktopWidget, QApplication,
QLabel, QPushButton, QVBoxLayout)
from PyQt5.QtGui import QPixmap, QIcon
from PyQt5.QtCore import QSize
class MainWindow(QWidget):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.initUI()
def initUI(self):
self.setWindowTitle('Main Window')
label = QLabel(self)
pixmap = QPixmap('D:/_Qt/img/pyqt.jpg')
label.setPixmap(pixmap)
self.resize(pixmap.width(), pixmap.height())
self.initButtons()
self.center()
self.show()
def initButtons(self):
self.button = QPushButton('button', self)
# button style things...
self.button.clicked.connect(self.handleButton)
# self.dialog = OptionsWindow(self) # ---
def handleButton(self):
self.dialog = OptionsWindow() # +++ - self
self.dialog.show()
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
class OptionsWindow(QWidget):
def __init__(self, parent=None):
super(OptionsWindow, self).__init__(parent)
self.setWindowTitle("Options")
self.resize(200,200)
self.center()
# self.show()
def center(self):
qr = self.frameGeometry()
cp = QDesktopWidget().availableGeometry().center()
qr.moveCenter(cp)
self.move(qr.topLeft())
def main():
app = QApplication(sys.argv)
main = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
Upvotes: 1