runningwater 6 gadi atpakaļ
vecāks
revīzija
cb771745f3
3 mainītis faili ar 95 papildinājumiem un 16 dzēšanām
  1. 15 16
      .idea/workspace.xml
  2. 22 0
      toolbars_and_menus.py
  3. 58 0
      widgets_stacklayout.py

+ 15 - 16
.idea/workspace.xml

@@ -2,8 +2,7 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="c4ea2cee-1e7b-4a07-b2da-95f789e91944" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/widgets.py" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/widgets_gridlayout.py" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/widgets_stacklayout.py" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
       <change beforePath="$PROJECT_DIR$/toolbars_and_menus.py" beforeDir="false" afterPath="$PROJECT_DIR$/toolbars_and_menus.py" afterDir="false" />
     </list>
@@ -27,7 +26,7 @@
   <component name="ProjectLevelVcsManager" settingsEditedManually="true" />
   <component name="PropertiesComponent">
     <property name="last_opened_file_path" value="$PROJECT_DIR$" />
-    <property name="settings.editor.selected.configurable" value="preferences.pluginManager" />
+    <property name="settings.editor.selected.configurable" value="preferences.externalTools" />
   </component>
   <component name="RecentsManager">
     <key name="CopyFile.RECENT_KEYS">
@@ -46,8 +45,8 @@
       </list>
     </option>
   </component>
-  <component name="RunManager" selected="Python.widgets_gridlayout">
-    <configuration name="MyApp" type="PythonConfigurationType" factoryName="Python" temporary="true">
+  <component name="RunManager" selected="Python.toolbars_and_menus">
+    <configuration name="MyApp_window" type="PythonConfigurationType" factoryName="Python" temporary="true">
       <module name="pyqt" />
       <option name="INTERPRETER_OPTIONS" value="" />
       <option name="PARENT_ENVS" value="true" />
@@ -59,7 +58,7 @@
       <option name="IS_MODULE_SDK" value="true" />
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/MyApp.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/MyApp_window.py" />
       <option name="PARAMETERS" value="" />
       <option name="SHOW_COMMAND_LINE" value="false" />
       <option name="EMULATE_TERMINAL" value="false" />
@@ -68,7 +67,7 @@
       <option name="INPUT_FILE" value="" />
       <method v="2" />
     </configuration>
-    <configuration name="MyApp_window" type="PythonConfigurationType" factoryName="Python" temporary="true">
+    <configuration name="toolbars_and_menus" type="PythonConfigurationType" factoryName="Python" temporary="true">
       <module name="pyqt" />
       <option name="INTERPRETER_OPTIONS" value="" />
       <option name="PARENT_ENVS" value="true" />
@@ -80,7 +79,7 @@
       <option name="IS_MODULE_SDK" value="true" />
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/MyApp_window.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/toolbars_and_menus.py" />
       <option name="PARAMETERS" value="" />
       <option name="SHOW_COMMAND_LINE" value="false" />
       <option name="EMULATE_TERMINAL" value="false" />
@@ -89,7 +88,7 @@
       <option name="INPUT_FILE" value="" />
       <method v="2" />
     </configuration>
-    <configuration name="toolbars_and_menus" type="PythonConfigurationType" factoryName="Python" temporary="true">
+    <configuration name="widgets" type="PythonConfigurationType" factoryName="Python" temporary="true">
       <module name="pyqt" />
       <option name="INTERPRETER_OPTIONS" value="" />
       <option name="PARENT_ENVS" value="true" />
@@ -101,7 +100,7 @@
       <option name="IS_MODULE_SDK" value="true" />
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/toolbars_and_menus.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/widgets.py" />
       <option name="PARAMETERS" value="" />
       <option name="SHOW_COMMAND_LINE" value="false" />
       <option name="EMULATE_TERMINAL" value="false" />
@@ -110,7 +109,7 @@
       <option name="INPUT_FILE" value="" />
       <method v="2" />
     </configuration>
-    <configuration name="widgets" type="PythonConfigurationType" factoryName="Python" temporary="true">
+    <configuration name="widgets_gridlayout" type="PythonConfigurationType" factoryName="Python" temporary="true">
       <module name="pyqt" />
       <option name="INTERPRETER_OPTIONS" value="" />
       <option name="PARENT_ENVS" value="true" />
@@ -122,7 +121,7 @@
       <option name="IS_MODULE_SDK" value="true" />
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/widgets.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/widgets_gridlayout.py" />
       <option name="PARAMETERS" value="" />
       <option name="SHOW_COMMAND_LINE" value="false" />
       <option name="EMULATE_TERMINAL" value="false" />
@@ -131,7 +130,7 @@
       <option name="INPUT_FILE" value="" />
       <method v="2" />
     </configuration>
-    <configuration name="widgets_gridlayout" type="PythonConfigurationType" factoryName="Python" temporary="true">
+    <configuration name="widgets_stacklayout" type="PythonConfigurationType" factoryName="Python" temporary="true">
       <module name="pyqt" />
       <option name="INTERPRETER_OPTIONS" value="" />
       <option name="PARENT_ENVS" value="true" />
@@ -143,7 +142,7 @@
       <option name="IS_MODULE_SDK" value="true" />
       <option name="ADD_CONTENT_ROOTS" value="true" />
       <option name="ADD_SOURCE_ROOTS" value="true" />
-      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/widgets_gridlayout.py" />
+      <option name="SCRIPT_NAME" value="$PROJECT_DIR$/widgets_stacklayout.py" />
       <option name="PARAMETERS" value="" />
       <option name="SHOW_COMMAND_LINE" value="false" />
       <option name="EMULATE_TERMINAL" value="false" />
@@ -154,11 +153,11 @@
     </configuration>
     <recent_temporary>
       <list>
+        <item itemvalue="Python.toolbars_and_menus" />
+        <item itemvalue="Python.widgets_stacklayout" />
         <item itemvalue="Python.widgets_gridlayout" />
         <item itemvalue="Python.widgets" />
-        <item itemvalue="Python.toolbars_and_menus" />
         <item itemvalue="Python.MyApp_window" />
-        <item itemvalue="Python.MyApp" />
       </list>
     </recent_temporary>
   </component>

+ 22 - 0
toolbars_and_menus.py

@@ -55,6 +55,28 @@ class MainWindow(QMainWindow):
     def onMyToolBarButtonClick(self, s):
         print("click", s)
 
+        dlg = CustomDialog(self)
+        if dlg.exec_():
+            print("Success!")
+        else:
+            print("Cancel!")
+
+
+class CustomDialog(QDialog):
+    def __init__(self, *args, **kwargs):
+        super(CustomDialog, self).__init__(*args, **kwargs)
+        self.setWindowTitle("HELLO!")
+
+        q_btn = QDialogButtonBox.Ok | QDialogButtonBox.Cancel
+
+        self.buttonBox = QDialogButtonBox(q_btn)
+        self.buttonBox.accepted.connect(self.accept)
+        self.buttonBox.rejected.connect(self.reject)
+
+        self.layout = QHBoxLayout()
+        self.layout.addWidget(self.buttonBox)
+        self.setLayout(self.layout)
+
 
 if __name__ == '__main__':
     app = QApplication(sys.argv)

+ 58 - 0
widgets_stacklayout.py

@@ -0,0 +1,58 @@
+# Only needed for access to command line arguments
+import sys
+
+from PyQt5.QtCore import *
+from PyQt5.QtGui import QPixmap, QPalette, QColor
+from PyQt5.QtWidgets import *
+
+
+# 自定义窗口,继承 QMainWindow
+class MainWindow(QMainWindow):
+    def __init__(self, *args, **kwargs):
+        super(MainWindow, self).__init__(*args, **kwargs)
+        self.setWindowTitle("My Awesome App")  # 标题
+
+        # pagelayout = QVBoxLayout()
+        # button_layout = QHBoxLayout()
+        # layout = QStackedLayout()
+        #
+        # pagelayout.addLayout(button_layout)
+        # pagelayout.addLayout(layout)
+        #
+        # for n, color in enumerate(['red', 'green', 'blue', 'yellow', 'purple']):
+        #     btn = QPushButton(str(color))
+        #     btn.pressed.connect(lambda n=n: layout.setCurrentIndex(n))
+        #     button_layout.addWidget(btn)
+        #     layout.addWidget(Color(color))
+
+        tabs = QTabWidget()
+        tabs.setDocumentMode(False)
+        tabs.setTabPosition(QTabWidget.North)
+        tabs.setMovable(True)
+
+        for n, color in enumerate(['red', 'green', 'blue', 'yellow', 'purple']):
+            tabs.addTab(Color(color), color)
+
+        self.setCentralWidget(tabs)
+
+    def index_changed(self, s):
+        print(s)
+
+
+class Color(QWidget):
+    def __init__(self, color, *args, **kwargs):
+        super(Color, self).__init__(*args, **kwargs)
+        self.setAutoFillBackground(True)
+
+        palette = self.palette()
+        palette.setColor(QPalette.Window, QColor(color))
+        self.setPalette(palette)
+
+
+if __name__ == '__main__':
+    app = QApplication(sys.argv)
+
+    window = MainWindow()
+    window.show()  # 默认下 windows 是隐藏的
+    # 开启事件循环
+    app.exec_()