PyQt5Day24--输入控件QDialog(对话框控件)
一、QDialog對話框控件介紹
是對話窗口類型;
對話窗口是頂級窗口,主要用于短期任務和與用戶的簡短通信;
可能是模態的或非模態對話框;
可以提供返回值,它們可以有默認按鈕。
二、QDialog的功能作用
1、模態與非模態對話框+控件創建
1 mport sys
2 from PyQt5.Qt import *
3
4 app=QApplication(sys.argv)
5
6 window=QWidget()
7 window.setWindowTitle("QDialog控件的創建")
8 window.resize(500,500)
9
10 d = QDialog(window)
11 d.setWindowTitle("對話框")
12 # d.exec() # 處理完了之后才有另一個窗口(模態對話框應用恒旭級別)
13 # d.open() # 阻塞,不處理這個窗口,另外一個沒法點擊(模態對話框窗口級別)
14 d.show() # 兩個窗口之間隨意點擊(非模態對話框)
15
16
17 window.show()
18 sys.exit(app.exec_())
2、模態設置
(1)框架
(2)操作及展示
1 # d.setModal(True) # 設置為模態 2 # d.setWindowModality(Qt.WindowModal) # 設置為窗口級別模態 3 d.setWindowModality(Qt.ApplicationModal) # 設置為應用程序級別模態
3、是否顯示尺寸調整控件
(1)框架
(2)操作及展示
1 d.setSizeGripEnabled(True) 2 print(d.isSizeGripEnabled()) # 查看
4、常用操作槽
(1)框架
(2)操作及展示
1 # 按鈕
2 btn1 = QPushButton(d)
3 btn1.setText("btn1")
4 btn1.move(20,20)
5 btn1.clicked.connect(lambda :d.accept()) # 返回1
6
7 btn2 = QPushButton(d)
8 btn2.setText("btn1")
9 btn2.move(60,60)
10 btn2.clicked.connect(lambda :d.reject()) # 返回0
11
12 btn3 = QPushButton(d)
13 btn3.setText("btn1")
14 btn3.move(60,130)
15 btn3.clicked.connect(lambda :d.done(8)) # 返回8
5、設置和獲取數值
(1)框架
(2)操作及展示
1 btn3.clicked.connect(lambda :d.setResult(8888)) # 點擊窗口不關閉 2 btn2.clicked.connect(lambda :print(d.result())) # 打印接收的結果
6、信號
(1)框架
(2)操作及展示
1 d.accepted.connect(lambda :print("點擊了,接收按鈕"))
2 d.rejected.connect(lambda :print("點擊了,拒絕按鈕"))
3 d.finished.connect(lambda :print("點擊了,完成按鈕"))
三、子類QFontDialog
提供了一種選擇字體的對話框控件
1、構造函數
(1)框架
(2)操作及展示
1 # fd = QFontDialog(self)
2 font = QFont()
3 font.setFamily("宋體")
4 font.setPointSize(36)
5 # fd = QFontDialog(font,self) # 構造函數
2、打開對話框
3、當前字體和最終選中字體
(1)框架
(2)操作及展示
1 fd.setCurrentFont(font) # 設置當前字體
2
3 fd.show()
4
5 btn = QPushButton(self)
6 btn.setText("按鈕")
7 btn.move(100, 100)
8
9 def fon_sel():
10 print("字體已經被選擇",fd.selectedFont().family()) # 最終選中字體
11 # btn.clicked.connect(lambda :fd.open(fon_sel()))
12
13 if fd.exec():
14 print(fd.selectedFont().family()) # 最終選中字體
4、選項控制
(1)框架
(2)操作及展示
1 # *******************QFontDialog選項控制**********************開始
2 from PyQt5.Qt import *
3
4 class Window(QWidget):
5 def __init__(self):
6 super().__init__()
7 self.setWindowTitle("QFontDialog")
8 self.resize(500, 500)
9 self.setup_ui()
10
11 def setup_ui(self):
12 # fd = QFontDialog(self)
13 font = QFont()
14 font.setFamily("宋體")
15 font.setPointSize(36)
16 # fd = QFontDialog(font,self) # 構造函數
17 fd = QFontDialog(self)
18 fd.setCurrentFont(font)
19
20 btn = QPushButton(self)
21 btn.setText("按鈕")
22 btn.move(100, 100)
23
24 # 選項控制
25 # fd.setOption(QFontDialog.NoButtons) # 字體選項沒有按鍵
26 fd.setOptions(QFontDialog.NoButtons | QFontDialog.MonospacedFonts) # 字體選項沒有按鍵
27 print(fd.testOption(QFontDialog.MonospacedFonts))
28 print(fd.testOption(QFontDialog.ScalableFonts))
29
30 fd.show()
31
32 # 實時顯示當前字體
33 # label = QLabel(self)
34 label.setText("哈哈")
35 label.move(200,100)
36 def cfc(font):
37 label.setFont(font)
38 label.adjustSize()
39 fd.currentFontChanged.connect(cfc)
40
41
42 if __name__ == '__main__':
43 import sys
44
45 app=QApplication(sys.argv)
46
47 window=Window()
48 window.show()
49 sys.exit(app.exec_())
50 # *******************QFontDialog選項控制**********************結束
選項控制
5、靜態方法
(1)框架
(2)操作及展示
1 # *******************QFontDialog靜態方法**********************開始
2 from PyQt5.Qt import *
3
4 class Window(QWidget):
5 def __init__(self):
6 super().__init__()
7 self.setWindowTitle("QFontDialog")
8 self.resize(500, 500)
9 self.setup_ui()
10
11 def setup_ui(self):
12 font = QFont()
13 font.setFamily("宋體")
14 font.setPointSize(36)
15
16 btn = QPushButton(self)
17 btn.setText("按鈕")
18 btn.move(100, 100)
19
20 label = QLabel(self)
21 label.setText("哈哈")
22 label.move(200,100)
23
24 def font_sel():
25 result = QFontDialog.getFont(font,self,"選擇一個好看的字體")
26 if result[1]:
27 label.setFont(result[0])
28 label.adjustSize()
29
30 btn.clicked.connect(font_sel)
31
32 if __name__ == '__main__':
33 import sys
34
35 app=QApplication(sys.argv)
36
37 window=Window()
38 window.show()
39 sys.exit(app.exec_())
40 # *******************QFontDialog靜態方法**********************結束
靜態方法
四、子類QColorDialog
顏色對話框的功能是允許用戶選擇顏色。
1、構造函數
(1)框架
(2)操作及展示
1 cd = QColorDialog(QColor(100,200,150),self)
2 cd.setWindowTitle("選擇一個好看的顏色")
2、打開對話框
3、當前顏色+最終選中顏色
(1)框架
(2)操作及展示
1 def color(col): 2 palette = QPalette() 3 palette.setColor(QPalette.Background,col) 4 self.setPalette(palette) 5 cd.colorSelected.connect(color)
4、選項控制
(1)框架
(2)操作及展示
1 # ******************QColorDialog-選項控制***********************開始
2 from PyQt5.Qt import *
3
4 class Window(QWidget):
5 def __init__(self):
6 super().__init__()
7 self.setWindowTitle("QFontDialog")
8 self.resize(500, 500)
9 self.setup_ui()
10
11 def setup_ui(self):
12 cd = QColorDialog(QColor(100,200,150),self)
13 cd.setWindowTitle("選擇一個好看的顏色")
14
15 # 選項控制
16 def color():
17 palette = QPalette()
18 palette.setColor(QPalette.Background,cd.currentColor())
19 self.setPalette(palette)
20
21 cd.setOptions(QColorDialog.NoButtons | QColorDialog.ShowAlphaChannel) # 無按鈕+透明度
22 cd.currentColorChanged.connect(color) # 監控當前顏色改變
23
24 cd.show()
25
26 if __name__ == '__main__':
27 import sys
28
29 app=QApplication(sys.argv)
30
31 window=Window()
32 window.show()
33 sys.exit(app.exec_())
34 # *****************QColorDialog-選項控制************************結束
選項控制
5、靜態方法
(1)框架
(2)操作及展示
1 # *******************QColorDialog-靜態方法**********************開始
2 from PyQt5.Qt import *
3
4 class Window(QWidget):
5 def __init__(self):
6 super().__init__()
7 self.setWindowTitle("QFontDialog")
8 self.resize(500, 500)
9 self.setup_ui()
10
11 def setup_ui(self):
12 cd = QColorDialog(QColor(100,200,150),self)
13 cd.setWindowTitle("選擇一個好看的顏色")
14
15 btn = QPushButton(self)
16 btn.move(100,100)
17 btn.setText("測試按鈕")
18
19 def test():
20 color = QColorDialog.getColor(QColor(10,20,100),self,"選擇顏色")
21 print(color)
22
23 btn.clicked.connect(test)
24
25 # btn.clicked.connect(lambda :print(QColorDialog.customCount()))
26 # btn.clicked.connect(lambda :QColorDialog.setCustomColor(3,QColor(100,200,50)))
27
28 cd.show()
29
30 if __name__ == '__main__':
31 import sys
32
33 app=QApplication(sys.argv)
34
35 window=Window()
36 window.show()
37 sys.exit(app.exec_())
38 # *******************QColorDialog-靜態方法**********************結束
靜態方法
(3)案例--按鈕顏色改變
1 # *******************QColorDialog-按鈕顏色改變**********************開始
2 from PyQt5.Qt import *
3
4 class Window(QWidget):
5 def __init__(self):
6 super().__init__()
7 self.setWindowTitle("按鈕顏色改變")
8 self.resize(500, 500)
9 self.setup_ui()
10
11 def setup_ui(self):
12 cd = QColorDialog(self)
13
14 btn = QPushButton(self)
15 btn.setText("測試按鈕")
16 btn.move(100,100)
17
18 def btn_color(color):
19 palette = QPalette()
20 palette.setColor(QPalette.ButtonText,color)
21 btn.setPalette((palette))
22
23 # cd.colorSelected.connect(btn_color) # 選擇顏色
24 cd.currentColorChanged.connect(btn_color) # 當前顏色實時展示
25
26 cd.show()
27
28 if __name__ == '__main__':
29 import sys
30
31 app=QApplication(sys.argv)
32
33 window=Window()
34 window.show()
35 sys.exit(app.exec_())
36 # *******************QColorDialog-按鈕顏色改變**********************結束
按鈕顏色改變
五、子類QFileDialog
提供一個對話框,允許用戶選擇文件或目錄;
允許用戶遍歷文件系統,以選擇一個或多個文件或目錄。
1、最簡單的獲取方式(靜態方法)
(1)框架
(2)操作及展示
1 # *******************QFileDialog-最簡單的獲取方式**********************開始
2 from PyQt5.Qt import *
3
4 class Window(QWidget):
5 def __init__(self):
6 super().__init__()
7 self.setWindowTitle("QFileDialog")
8 self.resize(500, 500)
9 self.setup_ui()
10
11 def setup_ui(self):
12 # 獲取文件的路徑
13 # result = QFileDialog.getOpenFileName(self,"選擇一個py文件","./","ALL(*.*);;
14 # images(*.png *.jpg);;Python文件(*.py)","Python文件(*.py)") # 單選一個文件
15 # result = QFileDialog.getOpenFileNames(self,"選擇一個py文件","./","ALL(*.*);;
16 # images(*.png *.jpg);;Python文件(*.py)","Python文件(*.py)") # 多選文件
17 # result = QFileDialog.getOpenFileUrl(self,"選擇一個py文件",QUrl("./"),"ALL(*.*);;
18 # images(*.png *.jpg);;Python文件(*.py)","Python文件(*.py)") # 獲取文件的url地址
19
20 # 保存文件
21 # result = QFileDialog.getSaveFileName(self,"選擇一個py文件","./","ALL(*.*);;
22 # images(*.png *.jpg);;Python文件(*.py)","Python文件(*.py)") # 保存文件
23
24 # 獲取文件夾的路徑
25 # result = QFileDialog.getExistingDirectory(self,"選擇一個py文件","./")
26 result = QFileDialog.getExistingDirectoryUrl(self,"選擇一個py文件",QUrl("./"))
27
28 print(result)
29
30 if __name__ == '__main__':
31 import sys
32
33 app=QApplication(sys.argv)
34
35 window=Window()
36 window.show()
37 sys.exit(app.exec_())
38 # *******************QFileDialog-最簡單的獲取方式**********************結束
最簡單的獲取方式
2、構造函數
(1)框架
(2)操作及展示
1 # *******************QFileDialog--構造函數**********************開始
2 from PyQt5.Qt import *
3
4 class Window(QWidget):
5 def __init__(self):
6 super().__init__()
7 self.setWindowTitle("QFileDialog")
8 self.resize(500, 500)
9 self.setup_ui()
10
11 def setup_ui(self):
12 def test():
13 fd = QFileDialog(self,"選擇一個文件","../","ALL(*.*);;
14 images(*.png *.jpg);;Python文件(*.py)")
15 fd.fileSelected.connect(lambda file:print(file)) # 獲取到路徑
16 fd.open()
17
18
19 btn = QPushButton(self)
20 btn.setText("測試按鈕")
21 btn.move(100,100)
22 btn.clicked.connect(test)
23
24 if __name__ == '__main__':
25 import sys
26
27 app=QApplication(sys.argv)
28
29 window=Window()
30 window.show()
31 sys.exit(app.exec_())
32 # *******************QFileDialog--構造函數**********************結束
構造函數
3、接收模式
(1)框架
(2)操作及展示
fd.setAcceptMode(QFileDialog.AcceptSave) # 保存一個文件
4、默認后綴
(1)框架
(2)操作及展示
fd.setDefaultSuffix("txt") # 默認后綴名
5、設置文件模式
(1)框架
(2)操作及展示
fd.setFileMode(QFileDialog.Directory) # 設置文件模式
6、設置名稱過濾器
(1)框架
(2)操作及展示
1 # fd.setNameFilter("IMG(*.jpg *.png *.jpeg)") # 單個
2 fd.setNameFilters(["ALL(*.*)","images(*.png *.jpg)","Python文件(*.py)"]) # 多個(列表)
7、顯示信息的詳細程度
(1)框架
(2)操作及展示
fd.setViewMode(QFileDialog.Detail) # 設置顯示信息的詳細程度
8、設置指定角色的標簽名稱
(1)框架
(2)操作及展示
1 fd.setLabelText(QFileDialog.FileName,"你需要打開的文件") 2 fd.setLabelText(QFileDialog.Accept,"你的接受") 3 fd.setLabelText(QFileDialog.Reject,"你的拒絕")
9、打開對話框
10、信號
(1)框架
(2)操作及展示
1 # 信號
2 # fd.currentChanged.connect(lambda path:print("當前路徑字符串發生改變",path))
3 # fd.currentUrlChanged.connect(lambda url:print("當前路徑QUrl發生改變",url))
4 # fd.directoryEntered.connect(lambda path:print("當前目錄字符串進入時",path))
5 # fd.directoryUrlEntered.connect(lambda url:print("當前目錄QUrl進入時",url))
6 fd.filterSelected.connect(lambda filter:print("當前名稱過濾字符串被選中時",filter))
六、子類QInputDialog
提供了一個簡單方便的對話框,獲得來自用戶的單個值;
輸入值可以提供字符串,數字或列表中的項目;
設置標簽以及告知用戶應輸入的內容。
1、常用的靜態方法
(1)框架
(2)操作及展示
1 # result = QInputDialog.getInt(self,"xxx1","xxx2",888,8,890,5) #(父控件,大標題,小標題,默認值,最小值,最大值,步長) 2 # result = QInputDialog.getDouble(self,"xxx1","xxx2",888,decimals = 2) #(父控件,大標題,小標題,默認值,小數位數) 3 # result = QInputDialog.getText(self,"xxx1","xxx2",echo=QLineEdit.Password) #(父控件,大標題,小標題,密文模式) 4 # result = QInputDialog.getMultiLineText(self,"xxx1","xxx2","default") #(父控件,大標題,小標題,默認值) 5 result = QInputDialog.getItem(self,"xxx1","xxx2",['1','2','3'],2,True) #(父控件,大標題,小標題,列表,默認值位置,可編輯)
2、構造函數
(1)框架
(2)操作及展示
1 # 構造函數 2 input_d = QInputDialog(self, Qt.FramelessWindowHint) # 無邊框 3 input_d.show()
3、選項設置
(1)框架
(2)操作及展示
1 # 選項控制 2 input_d.setOption(QInputDialog.UseListViewForComboBoxItems) 3 input_d.setComboBoxItems(['1', '2', '3'])
4、輸入模式
5、界面文本設置
(1)框架
(2)操作及展示
1 # 界面文本設置
2 input_d.setLabelText("請輸入你的姓名")
3 input_d.setOkButtonText("好的")
4 input_d.setCancelButtonText("我想取消")
6、各個小分類設置
(1)框架
(2)操作及展示
1 # 各個小分類設置 2 # 浮點型 3 input_d.setInputMode(QInputDialog.DoubleInput) # 模式設置 4 input_d.setDoubleRange(9.9, 19.9) 5 input_d.setDoubleStep(0.002) 6 input_d.setDoubleDecimals(3) # 3位小數 7 # 下拉列表 8 input_d.setComboBoxItems(['abc', '123', '4444']) # 模式切換為TextIput時,可展示
7、信號
(1)框架
(2)操作及展示
1 # 信號
2 input_d.doubleValueChanged.connect(lambda val: print("浮點型數據發生改變", val))
3 input_d.doubleValueSelected.connect(lambda val: print("浮點型數據最終被選中", val))
總結
以上是生活随笔為你收集整理的PyQt5Day24--输入控件QDialog(对话框控件)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 盈盈一水间 脉脉不得语(盈盈一水间,脉脉
- 下一篇: 【Tomcat学习】重启