利用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)")