runningwater 6 سال پیش
والد
کامیت
8d506bf623
4فایلهای تغییر یافته به همراه184 افزوده شده و 45 حذف شده
  1. 49 43
      .idea/workspace.xml
  2. 12 2
      toolbars_and_menus.py
  3. 78 0
      widgets.py
  4. 45 0
      widgets_gridlayout.py

+ 49 - 43
.idea/workspace.xml

@@ -2,48 +2,10 @@
 <project version="4">
   <component name="ChangeListManager">
     <list default="true" id="c4ea2cee-1e7b-4a07-b2da-95f789e91944" name="Default Changelist" comment="">
-      <change afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/inspectionProfiles/profiles_settings.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/modules.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/pyqt.iml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/MyApp.py" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/MyApp_window.py" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/arrow-000.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/arrow-180.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/arrow-circle-315.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/bomb.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/bug.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/cactus.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/cake.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/clock-select.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/cross-circle.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/cross.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/cup.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/disk--arrow.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/disk--pencil.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/flag.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/fruit.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/hamburger.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/home.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/ice-cream-sprinkles.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/lifebuoy.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/lock-nossl.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/lock-ssl.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/ma-icon-128.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/ma-icon-256.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/ma-icon-64.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/mushroom.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/plus.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/printer.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/question.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/rocket.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/smiley-lol.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/smiley.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/icons/ui-tab--plus.png" afterDir="false" />
-      <change afterPath="$PROJECT_DIR$/toolbars_and_menus.py" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/widgets.py" afterDir="false" />
+      <change afterPath="$PROJECT_DIR$/widgets_gridlayout.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>
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
     <option name="SHOW_DIALOG" value="false" />
@@ -84,7 +46,7 @@
       </list>
     </option>
   </component>
-  <component name="RunManager" selected="Python.toolbars_and_menus">
+  <component name="RunManager" selected="Python.widgets_gridlayout">
     <configuration name="MyApp" type="PythonConfigurationType" factoryName="Python" temporary="true">
       <module name="pyqt" />
       <option name="INTERPRETER_OPTIONS" value="" />
@@ -148,8 +110,52 @@
       <option name="INPUT_FILE" value="" />
       <method v="2" />
     </configuration>
+    <configuration name="widgets" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <module name="pyqt" />
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <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="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <option name="MODULE_MODE" value="false" />
+      <option name="REDIRECT_INPUT" value="false" />
+      <option name="INPUT_FILE" value="" />
+      <method v="2" />
+    </configuration>
+    <configuration name="widgets_gridlayout" type="PythonConfigurationType" factoryName="Python" temporary="true">
+      <module name="pyqt" />
+      <option name="INTERPRETER_OPTIONS" value="" />
+      <option name="PARENT_ENVS" value="true" />
+      <envs>
+        <env name="PYTHONUNBUFFERED" value="1" />
+      </envs>
+      <option name="SDK_HOME" value="" />
+      <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
+      <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="PARAMETERS" value="" />
+      <option name="SHOW_COMMAND_LINE" value="false" />
+      <option name="EMULATE_TERMINAL" value="false" />
+      <option name="MODULE_MODE" value="false" />
+      <option name="REDIRECT_INPUT" value="false" />
+      <option name="INPUT_FILE" value="" />
+      <method v="2" />
+    </configuration>
     <recent_temporary>
       <list>
+        <item itemvalue="Python.widgets_gridlayout" />
+        <item itemvalue="Python.widgets" />
         <item itemvalue="Python.toolbars_and_menus" />
         <item itemvalue="Python.MyApp_window" />
         <item itemvalue="Python.MyApp" />

+ 12 - 2
toolbars_and_menus.py

@@ -21,15 +21,16 @@ class MainWindow(QMainWindow):
         toolbar.setIconSize(QSize(16, 16))
         self.addToolBar(toolbar)
 
-        button_action = QAction(QIcon("icons/bug.png"), "Your button", self)
+        button_action = QAction(QIcon("icons/bug.png"), "&Your button", self)
         button_action.setStatusTip("This is your button")
         button_action.triggered.connect(self.onMyToolBarButtonClick)
         button_action.setCheckable(True)
+        button_action.setShortcut(QKeySequence("Ctrl+p"))
         toolbar.addAction(button_action)
 
         toolbar.addSeparator()
 
-        button_action2 = QAction(QIcon("icons/bug.png"), "Your button2", self)
+        button_action2 = QAction(QIcon("icons/bug.png"), "Your &button2", self)
         button_action2.setStatusTip("This your button2")
         button_action2.triggered.connect(self.onMyToolBarButtonClick)
         button_action2.setCheckable(True)
@@ -42,6 +43,15 @@ class MainWindow(QMainWindow):
         # 状态栏
         self.setStatusBar(QStatusBar(self))
 
+        # 菜单
+        menu = self.menuBar()
+        file_menu = menu.addMenu("&File")
+        file_menu.addAction(button_action)
+        file_menu.addSeparator()
+
+        file_submenu = file_menu.addMenu("Submenu")
+        file_submenu.addAction(button_action2)
+
     def onMyToolBarButtonClick(self, s):
         print("click", s)
 

+ 78 - 0
widgets.py

@@ -0,0 +1,78 @@
+# 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")  # 标题
+
+        # layout = QVBoxLayout()
+        # widgets = [QCheckBox,
+        #            QComboBox,
+        #            QDateEdit,
+        #            QDateTimeEdit,
+        #            QDial,
+        #            QDoubleSpinBox,
+        #            QFontComboBox,
+        #            QLCDNumber,
+        #            QLabel,
+        #            QLineEdit,
+        #            QProgressBar,
+        #            QPushButton,
+        #            QRadioButton,
+        #            QSlider,
+        #            QSpinBox,
+        #            QTimeEdit]
+        # for w in widgets:
+        #     layout.addWidget(w())
+
+        layout1 = QHBoxLayout()
+        layout2 = QVBoxLayout()
+        layout3 = QVBoxLayout()
+
+        layout1.setContentsMargins(0, 0, 0, 0)
+        layout1.setSpacing(20)
+
+        layout2.addWidget(Color('red'))
+        layout2.addWidget(Color('yellow'))
+        layout2.addWidget(Color('purple'))
+
+        layout1.addLayout(layout2)
+        layout1.addWidget(Color('green'))
+
+        layout3.addWidget(Color('red'))
+        layout3.addWidget(Color('blue'))
+
+        layout1.addLayout(layout3)
+
+        widget = QWidget()
+        widget.setLayout(layout1)
+        self.setCentralWidget(widget)
+
+    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_()

+ 45 - 0
widgets_gridlayout.py

@@ -0,0 +1,45 @@
+# 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")  # 标题
+
+        layout = QGridLayout()
+        layout.addWidget(Color('red'), 0, 0)
+        layout.addWidget(Color('green'), 0, 1)
+        layout.addWidget(Color('blue'), 1, 0)
+        layout.addWidget(Color('purple'), 1, 1)
+
+        widget = QWidget()
+        widget.setLayout(layout)
+        self.setCentralWidget(widget)
+
+    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_()