PyQt5 - Lớp QDialog
A QDialogwidget trình bày một cửa sổ cấp cao nhất chủ yếu được sử dụng để thu thập phản hồi từ người dùng. Nó có thể được cấu hình để trở thànhModal (nơi nó chặn cửa sổ mẹ của nó) hoặc Modeless (có thể bỏ qua cửa sổ hộp thoại).
API PyQt có một số tiện ích con Dialog được định cấu hình sẵn như InputDialog, FileDialog, FontDialog, v.v.
Thí dụ
Trong ví dụ sau, WindowModalitythuộc tính của cửa sổ Dialog quyết định xem nó là modal hay modeless. Bất kỳ một nút nào trên hộp thoại đều có thể được đặt làm mặc định. Hộp thoại bị hủy bởiQDialog.reject() khi người dùng nhấn phím Escape.
Một PushButton trên cửa sổ QWidget cấp cao nhất, khi được nhấp vào, sẽ tạo ra một cửa sổ Hộp thoại. Hộp thoại không có các điều khiển thu nhỏ và tối đa hóa trên thanh tiêu đề của nó.
Người dùng không thể chuyển hộp thoại này ở chế độ nền vì WindowModality của nó được đặt thành ApplicationModal.
import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
def window():
app = QApplication(sys.argv)
w = QWidget()
btn = QPushButton(w)
btn.setText("Hello World!")
btn.move(100,50)
btn.clicked.connect(showdialog)
w.setWindowTitle("PyQt Dialog demo")
w.show()
sys.exit(app.exec_())
def showdialog():
dlg = QDialog()
b1 = QPushButton("ok",dlg)
b1.move(50,50)
dlg.setWindowTitle("Dialog") 9. PyQt5 — QDialog Class
dlg.setWindowModality(Qt.ApplicationModal)
dlg.exec_()
if __name__ == '__main__':
window()
Đoạn mã trên tạo ra kết quả sau. Nhấp vào nút trong cửa sổ chính và hộp thoại bật lên -