widgets_stacklayout.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. # Only needed for access to command line arguments
  2. import sys
  3. from PyQt5.QtGui import QPalette, QColor
  4. from PyQt5.QtWidgets import *
  5. # 自定义窗口,继承 QMainWindow
  6. class MainWindow(QMainWindow):
  7. def __init__(self, *args, **kwargs):
  8. super(MainWindow, self).__init__(*args, **kwargs)
  9. self.setWindowTitle("My Awesome App") # 标题
  10. # pagelayout = QVBoxLayout()
  11. # button_layout = QHBoxLayout()
  12. # layout = QStackedLayout()
  13. #
  14. # pagelayout.addLayout(button_layout)
  15. # pagelayout.addLayout(layout)
  16. #
  17. # for n, color in enumerate(['red', 'green', 'blue', 'yellow', 'purple']):
  18. # btn = QPushButton(str(color))
  19. # btn.pressed.connect(lambda n=n: layout.setCurrentIndex(n))
  20. # button_layout.addWidget(btn)
  21. # layout.addWidget(Color(color))
  22. tabs = QTabWidget()
  23. tabs.setDocumentMode(False)
  24. tabs.setTabPosition(QTabWidget.North)
  25. tabs.setMovable(True)
  26. for n, color in enumerate(['red', 'green', 'blue', 'yellow', 'purple']):
  27. tabs.addTab(Color(color), color)
  28. self.setCentralWidget(tabs)
  29. def index_changed(self, s):
  30. print(s)
  31. class Color(QWidget):
  32. def __init__(self, color, *args, **kwargs):
  33. super(Color, self).__init__(*args, **kwargs)
  34. self.setAutoFillBackground(True)
  35. palette = self.palette()
  36. palette.setColor(QPalette.Window, QColor(color))
  37. self.setPalette(palette)
  38. if __name__ == '__main__':
  39. app = QApplication(sys.argv)
  40. window = MainWindow()
  41. window.show() # 默认下 windows 是隐藏的
  42. # 开启事件循环
  43. app.exec_()