pyQt 常用組件使用

利用Qt Designer工具做好界面

右鍵External tools->QtDesigner進入可視化編程,可以在Qt Designer改背景圖,也可以在py文件裏改。

改背景圖或圖標

在Qt Designer選中frame或按鈕等,右鍵選擇change stylesheet可以添加資源,再把資源設爲背景圖。

這裏做了兩個頁面:

   

現在要實現點擊頁面1的開始按鈕後,第一個界面關閉,顯示第二個頁面。

首先給按鈕添加事件:

self.start.clicked.connect(self.jump2_startFrame)#jump2_startFrame爲執行事件函數名

跳轉到界面2:

    def jump2_startFrame(self):
        the_window=SecondFrame()
        self.windowList.append(the_window)#注意在類中定義windowList=[]
        self.close()
        the_window.show()

總的代碼:

main.py:

from scapy.soft.first import *
if __name__ == '__main__':
    app=QApplication(sys.argv)
    the_mainwindow = FirstFrame()
    the_mainwindow.show()
    sys.exit(app.exec_())

first.py:

from scapy.soft.second import *
class FirstFrame(QMainWindow):
    windowList=[]
    def __init__(self, *args, **kwargs):
        super().__init__( *args, **kwargs)
        self.setObjectName("MainWindow")
        self.resize(821, 580)
        self.centralwidget = QtWidgets.QWidget()
        self.centralwidget.setObjectName("centralwidget")
        self.frame = QtWidgets.QFrame(self.centralwidget)
        self.frame.setGeometry(QtCore.QRect(0, -30, 821, 621))
        self.frame.setTabletTracking(False)
        self.frame.setStyleSheet("background-image: url(./pic/bg1.png);")
        self.frame.setFrameShape(QtWidgets.QFrame.StyledPanel)
        self.frame.setFrameShadow(QtWidgets.QFrame.Raised)
        self.frame.setLineWidth(0)
        self.frame.setObjectName("frame")
        self.start = QtWidgets.QPushButton(self.frame)
        self.start.setGeometry(QtCore.QRect(150, 410, 100, 47))
        self.start.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.start.setStyleSheet("background-image: url(./pic/start.png);")
        self.start.setText("")
        self.start.setObjectName("start")
        self.start.setFlat(True)
        self.start.clicked.connect(self.jump2_startFrame)
        self.exit = QtWidgets.QPushButton(self.frame)
        self.exit.setGeometry(QtCore.QRect(540, 410, 100, 47))
        self.exit.setCursor(QtGui.QCursor(QtCore.Qt.ArrowCursor))
        self.exit.setStyleSheet("background-image: url(./pic/exit.png);")
        self.exit.setText("")
        self.exit.setObjectName("exit")
        self.exit.setFlat(True)
        self.exit.clicked.connect(self.ex)
        self.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar()
        self.menubar.setGeometry(QtCore.QRect(0, 0, 721, 26))
        self.menubar.setObjectName("menubar")
        self.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar()
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)
        self.retranslateUi()
        QtCore.QMetaObject.connectSlotsByName(self)
    def jump2_startFrame(self):
        the_window=SecondFrame()
        self.windowList.append(the_window)
        self.close()
        the_window.show()
    def ex(self):
        sys.exit(app.exec_())
    def retranslateUi(self):
        _translate = QtCore.QCoreApplication.translate
        self.setWindowTitle(_translate("MainWindow", "校園輿情監測系統"))
if __name__ == '__main__':
    app=QApplication(sys.argv)
    the_mainwindow = FirstFrame()
    the_mainwindow.show()
    sys.exit(app.exec_())

second.py:

from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtWidgets import QApplication,QMainWindow
import sys
import cv2
import matplotlib.pyplot as plt
from PIL import Image
import os
from PIL import Image
class SecondFrame(QMainWindow):
    def __init__(self, *args, **kwargs):
        super().__init__( *args, **kwargs)
        self.setObjectName("MainWindow")
        self.resize(680, 568)
        self.centralwidget = QtWidgets.QWidget()
        self.centralwidget.setObjectName("centralwidget")
        self.label = QtWidgets.QLabel(self.centralwidget)
        self.label.setGeometry(QtCore.QRect(35, 40, 351, 41))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(15)
        self.label.setFont(font)
        self.label.setCursor(QtGui.QCursor(QtCore.Qt.UpArrowCursor))
        self.label.setObjectName("label")
        self.plainTextEdit = QtWidgets.QPlainTextEdit(self.centralwidget)
        self.plainTextEdit.setGeometry(QtCore.QRect(370, 40, 180, 41))
        self.plainTextEdit.setObjectName("plainTextEdit")
        self.plainTextEdit.setFont(font)
        self.confirm = QtWidgets.QPushButton(self.centralwidget)
        self.confirm.setGeometry(QtCore.QRect(570, 40, 80, 41))
        font.setPointSize(15)
        self.confirm.setFont(font)
        self.pushButton = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton.setGeometry(QtCore.QRect(150, 130, 311, 51))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(16)
        self.pushButton.setFont(font)
        self.pushButton.setObjectName("pushButton")
        self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_2.setGeometry(QtCore.QRect(150, 230, 311, 51))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(16)
        self.pushButton_2.setFont(font)
        self.pushButton_2.setObjectName("pushButton_2")
        self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_3.setGeometry(QtCore.QRect(150, 320, 311, 51))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(16)
        self.pushButton_3.setFont(font)
        self.pushButton_3.setObjectName("pushButton_3")
        self.pushButton_4 = QtWidgets.QPushButton(self.centralwidget)
        self.pushButton_4.setGeometry(QtCore.QRect(150, 420, 311, 51))
        font = QtGui.QFont()
        font.setFamily("Agency FB")
        font.setPointSize(16)
        self.pushButton_4.setFont(font)
        self.pushButton_4.setObjectName("pushButton_4")
        self.setCentralWidget(self.centralwidget)
        self.menubar = QtWidgets.QMenuBar()
        self.menubar.setGeometry(QtCore.QRect(0, 0, 659, 26))
        self.menubar.setObjectName("menubar")
        self.setMenuBar(self.menubar)
        self.statusbar = QtWidgets.QStatusBar()
        self.statusbar.setObjectName("statusbar")
        self.setStatusBar(self.statusbar)
        self.confirm.clicked.connect(self.showImage1)
        self.pushButton.clicked.connect(self.showImage1)
        self.pushButton_2.clicked.connect(self.showImage2)
        self.pushButton_3.clicked.connect(self.showImage3)
        self.pushButton_4.clicked.connect(self.showImage4)
        self.retranslateUi()
        QtCore.QMetaObject.connectSlotsByName(self)
    def showImage1(self):
        #print('1')
    def showImage2(self):
        #print('2')
    def showImage3(self):
        #print('3')
    def showImage4(self):
        #print('4')
    def retranslateUi(self):
        _translate = QtCore.QCoreApplication.translate
        self.setWindowTitle(_translate("MainWindow", "校園輿情監測系統"))
        self.label.setText(_translate("MainWindow", "請輸入要監測的輿情關鍵字:"))
        self.pushButton.setText(_translate("MainWindow", "各時間段出現頻率"))
        self.confirm.setText(_translate("MainWindow", "確定"))
        self.pushButton_2.setText(_translate("MainsWindow", "言論情緒分佈"))
        self.pushButton_3.setText(_translate("MainWindow", "網友出現頻率"))
        self.pushButton_4.setText(_translate("MainWindow", "熱詞詞雲圖"))

補:

matplot顯示圖片

img = Image.open(os.path.join('./pic/freq.png'))
        plt.figure("智能校園輿情采集與監測系統")
        plt.imshow(img)
        plt.axis('off')  # 關掉座標軸爲 off
        plt.rcParams['font.sans-serif'] = ['SimHei']
        plt.title('各時間段出現頻率')
        plt.show()

文件對話框QFileDialog

打開選擇的單文件

參數一:設置父組件
參數二:QFileDialog的標題
參數三:默認打開的目錄,“.”點表示程序運行目錄,/表示當前盤符根目錄
參數四:對話框的文件擴展名過濾器Filter,比如使用 Image files(*.jpg *.gif) 表示只能顯示擴展名爲.jpg或者.gif文件
設置多個文件擴展名過濾,使用雙引號隔開;
All Files(*);;PDF Files(*.pdf);;Text Files(*.txt)”
fileName, filetype = QFileDialog.getOpenFileName(self,
         "選取文件",  "c:/",   "Excel Files (*.xlsx)")

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章