当前位置:   article > 正文

PySide+Python+QTDesiger界面设计+图形布局_mac电脑打开pyside2库中desiger后,怎么排版好看点

mac电脑打开pyside2库中desiger后,怎么排版好看点

小编准备用PySide+QtDesiger开发个网络爬虫的界面,可是之前对Qt的界面布局不熟悉,经过几天的研究,也算小做成了一个,希望对读者有所帮助。

一、通过QtDesiger设置界面

这个直接打开QtDesiger就可以了,拖拽控件,保存之后生成了一个main.ui文件

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>1920</width>
    <height>1440</height>
   </rect>
  </property>
  <property name="minimumSize">
   <size>
    <width>1920</width>
    <height>1440</height>
   </size>
  </property>
  <property name="maximumSize">
   <size>
    <width>1920</width>
    <height>1440</height>
   </size>
  </property>
  <property name="windowTitle">
   <string>新浪微博爬虫系统</string>
  </property>
  <widget class="QWidget" name="centralwidget">
   <widget class="QTabWidget" name="tabWidget">
    <property name="geometry">
     <rect>
      <x>40</x>
      <y>40</y>
      <width>1841</width>
      <height>1361</height>
     </rect>
    </property>
    <property name="minimumSize">
     <size>
      <width>1200</width>
      <height>795</height>
     </size>
    </property>
    <property name="maximumSize">
     <size>
      <width>1920</width>
      <height>1440</height>
     </size>
    </property>
    <property name="font">
     <font>
      <pointsize>12</pointsize>
     </font>
    </property>
    <property name="toolTip">
     <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;数据分析&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
    </property>
    <property name="currentIndex">
     <number>0</number>
    </property>
    <widget class="QWidget" name="data_grap">
     <property name="whatsThis">
      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;数据爬取&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
     </property>
     <attribute name="title">
      <string>数据爬取</string>
     </attribute>
     <widget class="QWidget" name="">
      <property name="geometry">
       <rect>
        <x>50</x>
        <y>20</y>
        <width>1751</width>
        <height>1271</height>
       </rect>
      </property>
      <layout class="QVBoxLayout" name="verticalLayout">
       <item>
        <layout class="QHBoxLayout" name="horizontalLayout">
         <item>
          <widget class="QLabel" name="keyLabel">
           <property name="text">
            <string>关键字</string>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QLineEdit" name="keyEdit"/>
         </item>
         <item>
          <widget class="QPushButton" name="startBtn">
           <property name="text">
            <string>开始</string>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QPushButton" name="stopBtn">
           <property name="text">
            <string>停止</string>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QPushButton" name="refreshBtn">
           <property name="text">
            <string>刷新</string>
           </property>
          </widget>
         </item>
        </layout>
       </item>
       <item>
        <layout class="QHBoxLayout" name="horizontalLayout_2">
         <item>
          <widget class="QLabel" name="label">
           <property name="text">
            <string>爬取进度</string>
           </property>
          </widget>
         </item>
         <item>
          <widget class="QProgressBar" name="progressBar">
           <property name="value">
            <number>24</number>
           </property>
          </widget>
         </item>
        </layout>
       </item>
       <item>
        <widget class="QTableView" name="sinaTable">
         <attribute name="verticalHeaderShowSortIndicator" stdset="0">
          <bool>true</bool>
         </attribute>
        </widget>
       </item>
      </layout>
     </widget>
     <zorder>keyLabel</zorder>
     <zorder>keyEdit</zorder>
     <zorder>startBtn</zorder>
     <zorder>stopBtn</zorder>
     <zorder>label</zorder>
     <zorder>progressBar</zorder>
     <zorder></zorder>
     <zorder>tableView</zorder>
     <zorder>sinaTable</zorder>
    </widget>
    <widget class="QWidget" name="data_analysis">
     <property name="whatsThis">
      <string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;数据分析&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
     </property>
     <attribute name="title">
      <string>数据分析</string>
     </attribute>
    </widget>
   </widget>
  </widget>
  <widget class="QStatusBar" name="statusbar"/>
 </widget>
 <resources/>
 <connections/>
</ui>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164

二、把ui文件转化为.py文件

然后控制台到该文件文件的目录下。
c:/code/python>pyside-uic main.ui -o ui_main.py
就生成了main.py文件
如下

# -*- coding: utf-8 -*-

# Form implementation generated from reading ui file 'main.ui'
#
# Created: Tue May 02 16:16:03 2017
#      by: pyside-uic 0.2.15 running on PySide 1.2.4
#
# WARNING! All changes made in this file will be lost!

from PySide import QtCore, QtGui


class Ui_MainWindow(object):
    def setupUi(self, MainWindow):
        MainWindow.setObjectName("MainWindow")
        MainWindow.resize(1920, 1440)
        MainWindow.setMinimumSize(QtCore.QSize(1920, 1440))
        MainWindow.setMaximumSize(QtCore.QSize(1920, 1440))
        self.centralwidget = QtGui.QWidget(MainWindow)
        self.centralwidget.setObjectName("centralwidget")
        self.tabWidget = QtGui.QTabWidget(self.centralwidget)
        self.tabWidget.setGeometry(QtCore.QRect(40, 40, 1841, 1361))
        self.tabWidget.setMinimumSize(QtCore.QSize(1200, 795))
        self.tabWidget.setMaximumSize(QtCore.QSize(1920, 1440))
        font = QtGui.QFont()
        font.setPointSize(12)
        self.tabWidget.setFont(font)
        self.tabWidget.setObjectName("tabWidget")
        self.data_grap = QtGui.QWidget()
        self.data_grap.setObjectName("data_grap")
        self.widget = QtGui.QWidget(self.data_grap)
        self.widget.setGeometry(QtCore.QRect(50, 20, 1751, 1271))
        self.widget.setObjectName("widget")
        self.verticalLayout = QtGui.QVBoxLayout(self.widget)
        self.verticalLayout.setContentsMargins(0, 0, 0, 0)
        self.verticalLayout.setObjectName("verticalLayout")
        self.horizontalLayout = QtGui.QHBoxLayout()
        self.horizontalLayout.setObjectName("horizontalLayout")
        self.keyLabel = QtGui.QLabel(self.widget)
        self.keyLabel.setObjectName("keyLabel")
        self.horizontalLayout.addWidget(self.keyLabel)
        self.keyEdit = QtGui.QLineEdit(self.widget)
        self.keyEdit.setObjectName("keyEdit")
        self.horizontalLayout.addWidget(self.keyEdit)
        self.startBtn = QtGui.QPushButton(self.widget)
        self.startBtn.setObjectName("startBtn")
        self.horizontalLayout.addWidget(self.startBtn)
        self.stopBtn = QtGui.QPushButton(self.widget)
        self.stopBtn.setObjectName("stopBtn")
        self.horizontalLayout.addWidget(self.stopBtn)
        self.refreshBtn = QtGui.QPushButton(self.widget)
        self.refreshBtn.setObjectName("refreshBtn")
        self.horizontalLayout.addWidget(self.refreshBtn)
        self.verticalLayout.addLayout(self.horizontalLayout)
        self.horizontalLayout_2 = QtGui.QHBoxLayout()
        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
        self.label = QtGui.QLabel(self.widget)
        self.label.setObjectName("label")
        self.horizontalLayout_2.addWidget(self.label)
        self.progressBar = QtGui.QProgressBar(self.widget)
        self.progressBar.setProperty("value", 0)
        self.progressBar.setObjectName("grapProgress")
        self.horizontalLayout_2.addWidget(self.progressBar)
        self.verticalLayout.addLayout(self.horizontalLayout_2)
        self.sinaTable = QtGui.QTableView(self.widget)
        self.sinaTable.setObjectName("sinaTable")
        self.sinaTable.verticalHeader().setSortIndicatorShown(True)
        self.verticalLayout.addWidget(self.sinaTable)
        self.tabWidget.addTab(self.data_grap, "")
        self.data_analysis = QtGui.QWidget()
        self.data_analysis.setObjectName("data_analysis")
        self.tabWidget.addTab(self.data_analysis, "")
        MainWindow.setCentralWidget(self.centralwidget)
        self.statusbar = QtGui.QStatusBar(MainWindow)
        self.statusbar.setObjectName("statusbar")
        MainWindow.setStatusBar(self.statusbar)

        self.retranslateUi(MainWindow)
        self.tabWidget.setCurrentIndex(0)
        QtCore.QMetaObject.connectSlotsByName(MainWindow)

    def retranslateUi(self, MainWindow):
        MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "新浪微博爬虫系统", None, QtGui.QApplication.UnicodeUTF8))
        self.tabWidget.setToolTip(QtGui.QApplication.translate("MainWindow", "<html><head/><body><p>数据分析</p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
        self.data_grap.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<html><head/><body><p>数据爬取</p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
        self.keyLabel.setText(QtGui.QApplication.translate("MainWindow", "关键字", None, QtGui.QApplication.UnicodeUTF8))
        self.startBtn.setText(QtGui.QApplication.translate("MainWindow", "开始", None, QtGui.QApplication.UnicodeUTF8))
        self.stopBtn.setText(QtGui.QApplication.translate("MainWindow", "停止", None, QtGui.QApplication.UnicodeUTF8))
        self.refreshBtn.setText(QtGui.QApplication.translate("MainWindow", "刷新", None, QtGui.QApplication.UnicodeUTF8))
        self.label.setText(QtGui.QApplication.translate("MainWindow", "爬取进度", None, QtGui.QApplication.UnicodeUTF8))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.data_grap), QtGui.QApplication.translate("MainWindow", "数据爬取", None, QtGui.QApplication.UnicodeUTF8))
        self.data_analysis.setWhatsThis(QtGui.QApplication.translate("MainWindow", "<html><head/><body><p>数据分析</p></body></html>", None, QtGui.QApplication.UnicodeUTF8))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.data_analysis), QtGui.QApplication.translate("MainWindow", "数据分析", None, QtGui.QApplication.UnicodeUTF8))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94

三、为该界面绑定类

该文件要和上个ui_main.py文件放在同一个目录下

#!usr/bin/env python
#coding:utf-8
#这就是界面文件
import ui_main
import sys
from PySide.QtGui import QMainWindow,QApplication
from PySide.QtCore import Qt


class MainWindow(QMainWindow,ui_main.Ui_MainWindow):
    def __init__(self, parent=None):
        super(MainWindow,self).__init__(parent)
        self.setupUi(self)
        self.sinaTable.setGridStyle(Qt.PenStyle.SolidLine)
        self.sinaTable.setColumnWidth(0,200)
        self.sinaTable.setColumnWidth(2,300)
        self.sinaTable.setColumnWidth(1,200)
        self.sinaTable.setColumnWidth(3,1000)

        self.startBtn.clicked.connect(self.__startBtn_Click)
        self.refreshBtn.clicked.connect(self.__refreshBtn_Click)
    def __startBtn_Click(self,row):
        #开始按钮
        pass
    def __refreshBtn_Click(self):
        #刷新数据
        pass
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

三、调用该界面

到现在基本差不多了,就是调用这个类了,

import sys
#导入上面的类
import main
from PySide.QtGui import QApplication

if __name__ == '__main__':
    program = QApplication(sys.argv)
    app= main.MainWindow()
    app.show()
    program.exec_()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

这样就完成了一个界面的开发,希望给读者一定帮助!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/凡人多烦事01/article/detail/697194
推荐阅读
相关标签
  

闽ICP备14008679号