0

(Python 3.7 in Anaconda env, IDE = pycharm community)

I made two sub-pages(red, green) but there's only one sub-page(green) like following image.

enter image description here

And here's my code.

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *


class TestUI(QWidget):

    class Page(QWidget):

        def __init__(self, main):
            self.main = main
            super().__init__(parent=self.main)
            self._build_page(self.main)

        def _build_page(self, main):
            self.setObjectName("Page")
            self.setGeometry(0, 0, 200, 200)
            self.setStyleSheet("background-color: rgba(255, 0, 0, 255);")


    def __init__(self):
        super().__init__()
        self._build_ui()

    def _build_ui(self):
        self._build_window()
        self._build_login_page()

    def _build_window(self):
        # Window
        self.window_width = 360
        self.window_height = 640
        self.setGeometry(0, 0, self.window_width, self.window_height)
        self.setWindowFlags(Qt.FramelessWindowHint)

    def _build_login_page(self):
        self.page = self.Page(self)
        self.page2 = QWidget(parent=self)
        self.setObjectName("Page2")
        self.page2.setGeometry(100, 100, 200, 200)
        self.page2.setStyleSheet("background-color: rgba(0, 255, 0, 255);")

Their parent(), stylesheet form, isHidden(), isVisible() are all same.

/>>> self.ui.page, self.ui.page2

(<test_UI.TestUI.Page object at 0x000001CDCD42CD38>, <PyQt5.QtWidgets.QWidget object at 0x000001CDCD42CF78>)

/>>> self.ui.page.parent(), self.ui.page2.parent()

(<test_UI.TestUI object at 0x000001CDCD46F5E8>, <test_UI.TestUI object at 0x000001CDCD46F5E8>)

/>>> self.ui.page.styleSheet(), self.ui.page2.styleSheet()

('background-color: rgba(255, 0, 0, 255);', 'background-color: rgba(0, 255, 0, 255);')

/>>> self.ui.page.isHidden(), self.ui.page2.isHidden()

(False, False)

/>>> self.ui.page.isVisible(), self.ui.page2.isVisible()

(False, False)

I think there's only one difference; ui.page is an internal class inherits QWidget, ui.page2 is a QWidget object made directly.

And I think it does exist(just invisible; like rgba(*, *, *, 0)) because when I added

 self.ui.invisible_page.raise_()

in the other source file, so invisible_page comes to top of all widgets, and I couldn't press another pushbutton that behind invisible_page.

Is there any mistake?

eyllanesc
  • 221,139
  • 17
  • 121
  • 189

0 Answers0