博客 / 詳情

返回

pyqt圖形化顯示—4.便捷控件

設計一個完整的圖形化顯示肯定需要多個窗口啊,ui啊 為了方便進行設計,qtside6提供了很多便捷控件

彈出對話框

導入庫

from PySide6.QtWidgets import QMessageBox
QMessageBox 彈出對話框庫

界面

下面代碼展示一下 就是一個按鈕,點擊後彈出對話框
 1     def __init__(self):
 2         super().__init__()  # 調用父類的__init__方法,初始化QWidget
 3 
 4         btn = QPushButton('彈出對話框')  # 創建按鈕
 5         btn.clicked.connect(self.test)  # 連接按鈕的clicked信號到槽函數
 6 
 7         ml = QVBoxLayout()  # 創建主佈局
 8         ml.addWidget(btn)  # 添加到主佈局中
 9 
10         self.setLayout(ml)  # 設置主佈局
11 
12     def test(self):
13         QMessageBox.question(self, '提示', '這是一個對話框')
14         # QMessageBox.information(self, '提示', '這是一個對話框', QMessageBox.StandardButton.Ok)
15         # QMessageBox.warning(self, '提示', '這是一個對話框', QMessageBox.StandardButton.Ok)
16         # QMessageBox.critical(self, '提示', '這是一個對話框', QMessageBox.StandardButton.Ok)
17         # QMessageBox.about(self, '提示', '這是一個對話框')
彈出對話框界面展示

可以發現屬性有很多種下面介紹一下,其實沒有太大的區別,只有提示圖標的變化

question  image    information  image    warning  image
critical  image    about  image

根據第一個函數和其他函數的不同用法,可以發現參數不同的作用

QMessageBox.屬性名(self, '標題', '文字內容', 界面的交互按鈕,默認按鈕)
按鈕如果不設置會自動設置為Yes和No,具體有什麼提示按鈕可以在python中QMessageBox.StandardButton. 【記得帶點】查詢一下,還是整合了很多的。那如果我不希望這個界面只有一個按鈕怎麼設置多個呢,可以使用分隔符設置多個。默認按鈕就是在第五個參數位置重複一下希望默認的按鈕,不設置默認為第一個。
QMessageBox.information(self, '提示', '這是一個對話框',
                                QMessageBox.StandardButton.Ok | QMessageBox.StandardButton.No | QMessageBox.StandardButton.Cancel)

這樣我就設置了一個多按鈕的彈出框

image

 交互

那麼我們設置好了界面如何進行交互呢,其實QMessageBox.屬性名()是有返回值的,返回值為按鍵名稱【QMessageBox.StandardButton.按鍵名】,我們就可以根據返回值判斷設置邏輯

文件交互

導入庫

from PySide6.QtWidgets import QFileDialog
QFileDialog : 文件交互的庫

界面

    def __init__(self):
        super().__init__()  # 調用父類的__init__方法,初始化QWidget
        self.resize(200, 150)

        btn = QPushButton('選擇文件')  # 創建按鈕
        btn.clicked.connect(self.test)  

        ml = QVBoxLayout()  # 創建主佈局
        ml.addWidget(btn)

        self.setLayout(ml)  # 設置主佈局

    def test(self):
        fname = QFileDialog.getOpenFileName(self, '選擇文件', './', 'Text Files (*.txt);;All Files (*)')
        # fname = QFileDialog.getOpenFileNames(self, '選擇文件', './', 'Text Files (*.txt);;All Files (*)')
        # fname = QFileDialog.getExistingDirectory(self, '選擇文件', './')
        # fname = QFileDialog.getSaveFileName(self, '選擇文件', './', 'Text Files (*.txt);;All Files (*)')
        print(fname)
文件交互界面演示

不同的屬性對應不同的命令

getOpenFileName : 打開單個文件
getOpenFileNames : 打開多個文件
getExistingDirectory : 打開文件夾
getSaveFileName : 保存文件
 
getOpenFileName 和getOpenFileNames 的參數如下(self,‘標題名稱’,‘文件夾打開路徑’,‘過濾文件類型’)
self位置為窗口類型;過濾文件類型就行下圖演示確定上方的下拉框【過濾文件格式:名稱(*.希望的文件後綴 *.其他後綴);;名稱(*.文件後綴)】需要注意整個過濾類型中符號均為英文格式,例如:
'All Files (*);;Text Files (*.txt);;py文件(*.py))'

image

 選擇之後我們可以得到返回值

getOpenFileName  返回一個元組,第一個是文件地址,第二個是通過那個過濾類型中選擇的

image

 getOpenFileNames  返回一個元組,第一個元素是一個列表,各個文件的地址;第二個同樣是過濾類型名稱

image

 getExistingDirectory 的參數為(窗體名稱(sefl),‘標題名稱’,‘打開文件夾的默認路徑’)

image

getExistingDirectory  返回值為選擇的文件夾地址  image

getSaveFileName  與打開文件類似,返回值同樣為一個元組,第一個為保存文件地址,第二個為過濾類型。不同的是如果有同名文件夾,會提示是否覆蓋,是會覆蓋,否會返回一個有兩個空元素的元組

image

 選擇否,並關閉彈出的界面的返回值  image

 

 

 


 

 
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.