8.1 QDialog對話方塊控制元件基類
阿新 • • 發佈:2022-04-12
一、QDialog對話方塊控制元件基類
1.基本概念
- 對話方塊控制元件主要用於短時間內的互動,分為模態和非模態兩種型別,其中模態對話方塊有分為視窗級別和應用程式級別兩種。
# 1用於短期任務或臨時互動: # 1.模態對話方塊:應用程式級別(exce(),需要關閉互動視窗之後才能操作其他視窗==模態) # 2.模態對話方塊:視窗級別(open()僅阻塞關聯視窗互動,不影響其他視窗的互動==模態) # 3.非模態對話方塊:show() # 模態(阻塞性);非模態(不阻塞) # 2尺寸調整 qd.setSizeGripEnabled(True) # 控制元件右下角顯示 # 3槽函式 # qd.accept() # 接受 # qd.reject() # 取消 # qd.done() # 替代其他功能 # 4設定和獲取數值 # qd.setResult(int) # qd.result() # 5可用訊號 # qd.accepted() # qd.finished() # qd.rejected()
2.程式碼
點選檢視程式碼
from PyQt5.Qt import * import sys class Window(QWidget) : def __init__(self) : super().__init__() self.setWindowTitle("QDialog對話方塊控制元件 - PyQt5中文網") self.resize(600, 500) self.func_list() def func_list(self) : self.func() def func(self) : # 四種對話方塊和一個日曆控制元件 # QFontDialog # QColorDialog # QFileDialog # QInputDialog # QCalendarWidget ''' # 用於短期任務或臨時互動: # 1.模態對話方塊:應用程式級別(exce(),需要關閉互動視窗之後才能操作其他視窗==模態) # 2.模態對話方塊:視窗級別(open()僅阻塞關聯視窗互動,不影響其他視窗的互動==模態) # 3.非模態對話方塊:show() # 模態(阻塞性);非模態(不阻塞) ''' # 1模態演示 qd = QDialog(self) #qd.exec() #qd.open() # 不關聯的時候就能拖動 #qd.setModal(True) # 將非模態設定為模態視窗 #qd.setWindowModality(Qt.ApplicationModal) # 設定為視窗級別Qt.WindowModal,設定成應用程式級別Qt.ApplicationModal 只能用exec()輸出 #qd.show() # 2尺寸調整 qd.setSizeGripEnabled(True) # 控制元件右下角顯示 ''' # 3槽函式 # qd.accept() # 接受 # qd.reject() # 取消 # qd.done() # 替代其他功能 ''' btn1 = QPushButton(qd) btn1.move(10, 10) btn1.setText('按鈕1') btn1.clicked.connect(lambda : qd.accept()) # 接受,返回值為1 btn2 = QPushButton(qd) btn2.move(60, 60) btn2.setText('按鈕2') btn2.clicked.connect(lambda : qd.reject()) # 拒絕,返回值為0 btn3 = QPushButton(qd) btn3.move(10, 100) btn3.setText('按鈕3') btn3.clicked.connect(lambda : qd.done(5)) # 返回值為5 #print(qd.exec_())#輸出上面三個訊號的返回值 ''' # 4設定和獲取數值 # qd.setResult(int) # qd.result() ''' # btn1 = QPushButton(qd) # btn1.move(10, 100) # btn1.setText('按鈕1') # btn1.clicked.connect(lambda: qd.setResult(111)) # # btn2 = QPushButton(qd) # btn2.move(60, 60) # btn2.setText('按鈕2') # btn2.clicked.connect(lambda: print(qd.result())) # # print(qd.exec_()) ''' # 5可用訊號 # qd.accepted() # qd.finished() # qd.rejected() ''' qd.accepted.connect(lambda: print('接受')) qd.rejected.connect(lambda: print('拒絕')) qd.finished.connect(lambda val: print('結束', val)) qd.open() # 觸發訊號 if __name__ == '__main__' : app = QApplication(sys.argv) window = Window() window.show() sys.exit(app.exec_())