日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

PyQt5Day24--输入控件QDialog(对话框控件)

發布時間:2024/1/4 综合教程 45 生活家
生活随笔 收集整理的這篇文章主要介紹了 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(对话框控件)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。