QT教程5:消息框
PyQt5 message box
默認情況下,如果我們點擊標題欄上的 x 按鈕,QWidget 會關閉。有時我們想修改這個默認行為。例如,如果我們在編輯器中打開了一個文件,我們對其進行了一些更改。我們顯示一個消息框來確認操作。messagebox.py
#!/usr/bin/python""" ZetCode PyQt5 tutorialThis program shows a confirmation message box when we click on the close button of the application window.Author: Jan Bodnar Website: zetcode.com """import sys from PyQt5.QtWidgets import QWidget, QMessageBox, QApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.setGeometry(300, 300, 250, 150)self.setWindowTitle('Message box')self.show()def closeEvent(self, event):reply = QMessageBox.question(self, 'Message',"Are you sure to quit?", QMessageBox.Yes |QMessageBox.No, QMessageBox.No)if reply == QMessageBox.Yes:event.accept()else:event.ignore()def main():app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())if __name__ == '__main__':main() 如果我們關閉 QWidget,則會生成 QCloseEvent。要修改小部件行為,我們需要重新實現 closeEvent 事件處理程序。 reply = QMessageBox.question(self, 'Message',"Are you sure to quit?", QMessageBox.Yes |QMessageBox.No, QMessageBox.No) 我們顯示一個帶有兩個按鈕的消息框:是和否。第一個字符串出現在標題欄上。第二個字符串是對話框顯示的消息文本。第三個參數指定出現在對話框中的按鈕組合。最后一個參數是默認按鈕。它是最初具有鍵盤焦點的按鈕。返回值存儲在回復變量中。 if reply == QtGui.QMessageBox.Yes:event.accept() else:event.ignore() 這里我們測試返回值。如果我們單擊 Yes 按鈕,我們將接受導致窗口小部件關閉和應用程序終止的事件。否則我們忽略關閉事件。Figure: Message box
Centering window on the screen
以下腳本顯示了我們如何在桌面屏幕上居中放置一個窗口。center.py
#!/usr/bin/python""" ZetCode PyQt5 tutorialThis program centers a window on the screen.Author: Jan Bodnar Website: zetcode.com """import sys from PyQt5.QtWidgets import QWidget, QDesktopWidget, QApplicationclass Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):self.resize(250, 150)self.center()self.setWindowTitle('Center')self.show()def center(self):qr = self.frameGeometry()cp = QDesktopWidget().availableGeometry().center()qr.moveCenter(cp)self.move(qr.topLeft())def main():app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())if __name__ == '__main__':main() QDesktopWidget 類提供有關用戶桌面的信息,包括屏幕大小。 self.center() 將窗口居中的代碼放置在自定義中心方法中 qr = self.frameGeometry() 我們得到一個指定主窗口幾何形狀的矩形。這包括任何窗框。 cp = QDesktopWidget().availableGeometry().center() 我們計算出顯示器的屏幕分辨率。從這個分辨率,我們得到中心點。 qr.moveCenter(cp) 我們的矩形已經有了它的寬度和高度。現在我們將矩形的中心設置為屏幕的中心。矩形的大小不變。 self.move(qr.topLeft()) 我們將應用程序窗口的左上角移動到 qr 矩形的左上角,從而使窗口在屏幕上居中。在 PyQt5 教程的這一部分中,我們在 PyQt5 中創建了簡單的代碼示例。總結
- 上一篇: 射影几何笔记3:中心射影-透视射影
- 下一篇: PyQt5教程7:布局Layout管理