python 按鈕點選關閉視窗的實現
阿新 • • 發佈:2020-03-05
1、簡介
1)使用 python 建立主視窗
2)設定標題欄圖示,文字
3)設定狀態列圖示文字
4)將視窗移動到螢幕中間
2、功能實現
1) QtDesign 實現
就是 先畫 ui 然後轉python
# -*- coding: utf-8 -*- # Form implementation generated from reading ui file 'untitled.ui' # # Created by: PyQt5 UI code generator 5.11.3 # # WARNING! All changes made in this file will be lost! import sys from PyQt5 import QtCore,QtGui,QtWidgets from PyQt5.QtWidgets import QApplication class Ui_MainWindow(object): def setupUi(self,MainWindow): MainWindow.setObjectName("MainWindow") MainWindow.resize(800,600) # 設定視窗大小 self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.verticalLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.verticalLayoutWidget.setGeometry(QtCore.QRect(20,20,100,60)) #設定 按鈕位置大小 self.verticalLayoutWidget.setObjectName("verticalLayoutWidget") self.verticalLayout = QtWidgets.QVBoxLayout(self.verticalLayoutWidget) self.verticalLayout.setContentsMargins(0,0) self.verticalLayout.setObjectName("verticalLayout") self.pushButton = QtWidgets.QPushButton(self.verticalLayoutWidget) self.pushButton.setObjectName("pushButton") self.pushButton.clicked.connect(self.onButtonClick) #繫結按鍵點選事件 self.verticalLayout.addWidget(self.pushButton) MainWindow.setCentralWidget(self.centralwidget) self.menubar = QtWidgets.QMenuBar(MainWindow) self.menubar.setGeometry(QtCore.QRect(0,800,23)) self.menubar.setObjectName("menubar") MainWindow.setMenuBar(self.menubar) self.statusbar = QtWidgets.QStatusBar(MainWindow) self.statusbar.setObjectName("statusbar") MainWindow.setStatusBar(self.statusbar) self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow) def retranslateUi(self,MainWindow): _translate = QtCore.QCoreApplication.translate MainWindow.setWindowTitle(_translate("MainWindow","MainWindow")) self.pushButton.setText(_translate("MainWindow","關閉視窗")) # 設定按鈕文字 def onButtonClick(self): # sender 是傳送訊號的物件,此處傳送訊號的物件是button1按鈕 sender = self.sender() print(sender.text() + ' 被按下了') qApp = QApplication.instance() qApp.quit() # 關閉視窗 if __name__ == '__main__': app = QtWidgets.QApplication(sys.argv) MainWindow = QtWidgets.QMainWindow() ui = Ui_MainWindow() ui.setupUi(MainWindow) MainWindow.show() sys.exit(app.exec_())
可以設定 按鈕位置和大小,但是速度有點慢
2)使用 python 直接寫出來
速度快一些,但是還沒有掌握怎麼設定按鈕大小和位置··
# -*- coding: utf-8 -*- ''' 【簡介】 PyQT5中主視窗例子 ''' import sys from PyQt5.QtWidgets import QMainWindow,QApplication,QDesktopWidget,QPushButton,QHBoxLayout,QWidget from PyQt5.QtGui import QIcon class MainWidget(QMainWindow): def __init__(self,parent=None): super(MainWidget,self).__init__(parent) # 設定主窗體標籤 self.setWindowTitle("QMainWindow 例子") #設定主視窗文字 self.resize(400,200) #設定主視窗大小 self.status = self.statusBar() #獲取主視窗狀態列 self.status.showMessage("這是狀態列提示",5000) #設定主視窗狀態列文字 self.center() # 呼叫將視窗設定中間函式 self.button1 = QPushButton('關閉主視窗') #例項化一個 按鍵 self.button1.setStyleSheet("background-color: red") # 設定按鈕的風格和顏色 self.button1.clicked.connect(self.onButtonClick) #繫結按鍵點選事件 layout = QHBoxLayout() layout.addWidget(self.button1) main_frame = QWidget() main_frame.setLayout(layout) self.setCentralWidget(main_frame) def onButtonClick(self ): #sender 是傳送訊號的物件,此處傳送訊號的物件是button1按鈕 sender = self.sender() print( sender.text() + ' 被按下了' ) qApp = QApplication.instance() qApp.quit() def center(self): screen = QDesktopWidget().screenGeometry() # 獲取當前螢幕物件 size = self.geometry() # 獲取視窗尺寸資料 self.move((screen.width() - size.width()) / 2,(screen.height() - size.height()) / 2) # 根據螢幕尺寸 和 視窗尺寸計算 相應位置 if __name__ == "__main__": app = QApplication(sys.argv) app.setWindowIcon(QIcon("./images/cartoon1.ico")) #設定主視窗的圖示 main = MainWidget() #獲取主視窗物件 main.show() sys.exit(app.exec_())