toolbars_and_menus.py 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # Only needed for access to command line arguments
  2. import sys
  3. from PyQt5.QtCore import *
  4. from PyQt5.QtWidgets import *
  5. from PyQt5.QtGui import *
  6. # 自定义窗口,继承 QMainWindow
  7. class MainWindow(QMainWindow):
  8. def __init__(self, *args, **kwargs):
  9. super(MainWindow, self).__init__(*args, **kwargs)
  10. self.setWindowTitle("My Awesome App") # 标题
  11. label = QLabel("THIS IS AWESOME!!!")
  12. label.setAlignment(Qt.AlignCenter)
  13. self.setCentralWidget(label)
  14. toolbar = QToolBar("My main toolbar")
  15. toolbar.setIconSize(QSize(16, 16))
  16. self.addToolBar(toolbar)
  17. button_action = QAction(QIcon("icons/bug.png"), "&Your button", self)
  18. button_action.setStatusTip("This is your button")
  19. button_action.triggered.connect(self.onMyToolBarButtonClick)
  20. button_action.setCheckable(True)
  21. button_action.setShortcut(QKeySequence("Ctrl+p"))
  22. toolbar.addAction(button_action)
  23. toolbar.addSeparator()
  24. button_action2 = QAction(QIcon("icons/bug.png"), "Your &button2", self)
  25. button_action2.setStatusTip("This your button2")
  26. button_action2.triggered.connect(self.onMyToolBarButtonClick)
  27. button_action2.setCheckable(True)
  28. toolbar.addAction(button_action2)
  29. toolbar.addSeparator()
  30. toolbar.addWidget(QLabel("Hello"))
  31. toolbar.addWidget(QCheckBox())
  32. # 状态栏
  33. self.setStatusBar(QStatusBar(self))
  34. # 菜单
  35. menu = self.menuBar()
  36. file_menu = menu.addMenu("&File")
  37. file_menu.addAction(button_action)
  38. file_menu.addSeparator()
  39. file_submenu = file_menu.addMenu("Submenu")
  40. file_submenu.addAction(button_action2)
  41. def onMyToolBarButtonClick(self, s):
  42. print("click", s)
  43. dlg = CustomDialog(self)
  44. if dlg.exec_():
  45. print("Success!")
  46. else:
  47. print("Cancel!")
  48. class CustomDialog(QDialog):
  49. def __init__(self, *args, **kwargs):
  50. super(CustomDialog, self).__init__(*args, **kwargs)
  51. self.setWindowTitle("HELLO!")
  52. q_btn = QDialogButtonBox.Ok | QDialogButtonBox.Cancel
  53. self.buttonBox = QDialogButtonBox(q_btn)
  54. self.buttonBox.accepted.connect(self.accept)
  55. self.buttonBox.rejected.connect(self.reject)
  56. self.layout = QHBoxLayout()
  57. self.layout.addWidget(self.buttonBox)
  58. self.setLayout(self.layout)
  59. if __name__ == '__main__':
  60. app = QApplication(sys.argv)
  61. window = MainWindow()
  62. window.show() # 默认下 windows 是隐藏的
  63. # 开启事件循环
  64. app.exec_()