【pyqt5學習】——對話框QDialog學習(QMessageBox、QColorDialog、QFIleDialog、QFontDialog、QInputDialog)

目錄

1、對話框QDialog類別

2、通用對話框

??編輯

3、消息對話框QMessageBox()?

1)消息對話框QMessageBox類型

2)案例

??編輯

?4、輸入對話框QInputDialog

1) 類型

?2)案例

5、字體格式對話框QFontDialog

?6、顏色對話框QColorDialog

1)獲取顏色

2)利用顏色對話框修改字體顏色和背景色

①字體顏色設置

?②字體背景色設置

③完整代碼

注意:這種方法背景色和字體顏色無法同時修改?

7、文件對話框

1)選擇指定后綴名的文件

方法一

?方法二

2)打開一個文件夾

3)利用QFileDialog實現圖片選擇和文件加載


1、對話框QDialog類別

QMessage——信息提示框

QColorDialog——顏色對話框

QFIleDialog——文件操作對話框

QFontDialog——字體格式對話框

QInputDialog——輸入對話框

2、通用對話框

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/25 18:16
# @Author  : @linlianqin
# @Site    : 
# @File    : QDialog_learn.py
# @Software: PyCharm
# @description:from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys## 通用對話框
class QDialogDemo(QMainWindow):def __init__(self):super(QDialogDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(300,100)self.setWindowTitle("Qdialog Demo")self.btn1 = QPushButton("彈出對話框",self)self.btn1.move(50,50)# 點擊按鈕彈出對話框self.btn1.clicked.connect(self.showDialog)# 創建對話框,點擊按鈕關閉def showDialog(self):dialog = QDialog()dialog.resize(200,100)dialog.setWindowTitle("對話框")btn = QPushButton("關閉",dialog) # 在dialog中創建按鈕btn.move(50,50)btn.clicked.connect(dialog.close)# 將對話框設置為APP模式,即對話框未關閉時,沒有辦法對主窗口的控件進行操作# 進入app循環dialog.exec()if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QDialogDemo()mainWin.show()sys.exit(app.exec_())

?

?注:

1)當有多個窗口時,并且在不同的窗口創建控件時,需要指明其父類是誰

self.btn1 = QPushButton("彈出對話框",self)
btn = QPushButton("關閉",dialog) # 在dialog中創建按鈕

2)創建一個新的對話框窗口時,不要忘記加上exec(),進入循環

dialog.exec()

3、消息對話框QMessageBox()?

1)消息對話框QMessageBox類型

關于對話框——about

錯誤對話框——critical

警告對話框——warning

提問對話框——question

消息對話框——information

注:上述幾種不同的消息對話框主要是顯示的按鈕不一樣,且圖標不一樣

2)案例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/25 18:30
# @Author  : @linlianqin
# @Site    : 
# @File    : QMessageBox_learn.py
# @Software: PyCharm
# @description:from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys## 通用對話框
class QMessageBoxDemo(QWidget):def __init__(self):super(QMessageBoxDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(300,100)self.setWindowTitle("Qdialog Demo")layout = QVBoxLayout()self.btn1 = QPushButton("關于對話框")self.btn2 = QPushButton("錯誤對話框")self.btn3 = QPushButton("警告對話框")self.btn4 = QPushButton("消息對話框")self.btn5 = QPushButton("提問對話框")layout.addWidget(self.btn1)layout.addWidget(self.btn2)layout.addWidget(self.btn3)layout.addWidget(self.btn4)layout.addWidget(self.btn5)# 點擊按鈕彈出對話框self.btn1.clicked.connect(self.showDialog)self.btn2.clicked.connect(self.showDialog)self.btn3.clicked.connect(self.showDialog)self.btn4.clicked.connect(self.showDialog)self.btn5.clicked.connect(self.showDialog)self.setLayout(layout)# 創建對話框,點擊按鈕關閉def showDialog(self):text = self.sender().text()if text == "關于對話框":QMessageBox.about(self,"關于","關于對話框")elif text == "錯誤對話框":QMessageBox.critical(self,"錯誤","錯誤對話框")if text == "警告對話框":QMessageBox.warning(self,"關于","關于對話框")if text == "消息對話框":QMessageBox.information(self,"消息","消息對話框")if text == "提問對話框":QMessageBox.question(self,"提問","提問對話框")# 消息對話框
if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QMessageBoxDemo()mainWin.show()sys.exit(app.exec_())

?

?

?4、輸入對話框QInputDialog

1) 類型

QInputDialog.getItem——傳入列表或者元組

QInputDialog.getText——錄入文本

QInputDialog.getInt——錄入整數

?2)案例

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/25 18:47
# @Author  : @linlianqin
# @Site    : 
# @File    : QInputDialog_learn.py
# @Software: PyCharm
# @description:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys## 輸入對話框
class QInputDialogDemo(QWidget):def __init__(self):super(QInputDialogDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(300,100)self.setWindowTitle("Qdialog Demo")layout = QFormLayout()self.btn1 = QPushButton("獲取列表中的選項")self.btn1.clicked.connect(self.getItem)self.line1 = QLineEdit()layout.addRow(self.btn1,self.line1)self.btn2 = QPushButton("獲取字符串")self.btn2.clicked.connect(self.getText)self.line2 = QLineEdit()layout.addRow(self.btn2,self.line2)self.btn3 = QPushButton("獲取整數")self.btn3.clicked.connect(self.getInt)self.line3 = QLineEdit()layout.addRow(self.btn3,self.line3)self.setLayout(layout)def getItem(self):items = ["C","C++","Python"]item,ok = QInputDialog.getItem(self,"請選擇編程語言","語言列表",items)if ok and item:self.line1.setText(item)def getText(self):text,ok = QInputDialog.getText(self,"文本輸入框","輸入姓名")if ok and text:self.line2.setText(text)def getInt(self):num,ok = QInputDialog.getInt(self,"整數輸入框","輸入年齡")if ok and num:self.line3.setText(str(num))if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QInputDialogDemo()mainWin.show()sys.exit(app.exec_())

?

?

5、字體格式對話框QFontDialog

通過這個對話框可以設置字體類型、字體大小,返回的是一個元組,元組包含字體格式和一個bool類型

font,ok = QFontDialog.getFont()

font,ok = QFontDialog.getFont()

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/26 10:14
# @Author  : @linlianqin
# @Site    : 
# @File    : QFontDialog_learn.py
# @Software: PyCharm
# @description:
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys## 字體格式對話框
class QFontDialogDemo(QWidget):def __init__(self):super(QFontDialogDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(300,100)self.setWindowTitle("QFontDialog Demo")layout = QVBoxLayout()self.btn1 = QPushButton("字體格式")self.label = QLabel("字體格式測試樣例")self.btn1.clicked.connect(self.changeFont)layout.addWidget(self.btn1)layout.addWidget(self.label)self.setLayout(layout)def changeFont(self):font,ok = QFontDialog.getFont()if ok:self.label.setFont(font)if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QFontDialogDemo()mainWin.show()sys.exit(app.exec_())

?

修改字體格式后:

?

?6、顏色對話框QColorDialog

1)獲取顏色

foreColor = QColorDialog.getColor()

返回QColor類

2)利用顏色對話框修改字體顏色和背景色

①字體顏色設置

	def setForeColor(self):# 通過顏色對話框得到顏色foreColor = QColorDialog.getColor()# 設置文字顏色p = QPalette()p.setColor(QPalette.WindowText,foreColor)self.label.setPalette(p)

?②字體背景色設置

	def setBgColor(self):# 設置背景色bgColor = QColorDialog.getColor()p = QPalette()p.setColor(QPalette.Window,bgColor)self.label.setAutoFillBackground(True)self.label.setPalette(p)

③完整代碼

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/26 10:23
# @Author  : @linlianqin
# @Site    : 
# @File    : QColorDialog_learn.py
# @Software: PyCharm
# @description:from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys## 顏色對話框
class QColorDialogDemo(QWidget):def __init__(self):super(QColorDialogDemo, self).__init__()self.InitUI()def InitUI(self):self.resize(300,100)self.setWindowTitle("QColorDialog Demo")layout = QVBoxLayout()self.btn1 = QPushButton("設置字體顏色")self.btn2 = QPushButton("設置背景色")self.label = QLabel("顏色對話框測試")self.btn1.clicked.connect(self.setForeColor)self.btn2.clicked.connect(self.setBgColor)layout.addWidget(self.btn1)layout.addWidget(self.btn2)layout.addWidget(self.label)self.setLayout(layout)def setForeColor(self):# 通過顏色對話框得到顏色foreColor = QColorDialog.getColor()# 設置文字顏色p = QPalette()p.setColor(QPalette.WindowText,foreColor)self.label.setPalette(p)def setBgColor(self):# 設置背景色bgColor = QColorDialog.getColor()p = QPalette()p.setColor(QPalette.Window,bgColor)self.label.setAutoFillBackground(True)self.label.setPalette(p)if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QColorDialogDemo()mainWin.show()sys.exit(app.exec_())

?

設置字體顏色

?

?設置背景色

注意:這種方法背景色和字體顏色無法同時修改?

7、文件對話框

PyQt5之QFileDialog_Anony吧的博客-CSDN博客_pyqt5 qfiledialogPyQt5之QFileDialogQFileDialog是用于打開和保存文件的標準對話框,QFileDialog在打開文件時使用了文件過濾器,用于顯示指定擴展名的文件。也可以設置使用QFileDialog打開文件時的起始目錄和指定擴展名的文件。一、QFileDialog類中的常用方法方法描述getOpenFileName()返回用戶所選擇的文件名稱,并打開該文件getSaveFileName()使用用戶選擇的文件名保存文件setFilter()設置過濾器,只顯https://blog.csdn.net/qq_44880255/article/details/106979791?

QFileDialog是用于打開和保存文件的標準對話框,QFileDialog在打開文件時使用了文件過濾器,用于顯示指定擴展名的文件。也可以設置使用QFileDialog打開文件時的起始目錄和指定擴展名的文件。?

?

?

# 選擇后綴名為,jpg和.png的圖片文件,并顯示在label中
frame,_ = QFileDialog.getOpenFileName(self,"打開文件",".","Image files (*.jpg;*.png)")

1)選擇指定后綴名的文件

方法一

	def loadImage(self):# 選擇后綴名為,jpg和.png的圖片文件,并顯示在label中frame,_ = QFileDialog.getOpenFileName(self,"打開文件",".","Image files (*.jpg;*.png)")print(frame)self.imageLabel.setPixmap(QPixmap(frame))

?方法二

	def loadText(self):dialog = QFileDialog()dialog.setFileMode(QFileDialog.AnyFile)dialog.setFilter(QDir.Files)if dialog.exec():filenames = dialog.selectedFiles()print(filenames)with open(filenames[0],encoding = "utf-8",mode='r') as f:data = f.read()self.contents.setText(data)

2)打開一個文件夾

	def openDir(self):fname = QFileDialog.getExistingDirectory(self,"打開文件夾",".")self.DirLabel.setText("選擇文件夾:"+fname)

3)利用QFileDialog實現圖片選擇和文件加載

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2022/5/26 10:57
# @Author  : @linlianqin
# @Site    : 
# @File    : QFileDialog_learn.py
# @Software: PyCharm
# @description:# 文件對話框
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sysclass QFileDialogDemo(QWidget):def __init__(self):super(QFileDialogDemo, self).__init__()self.InitUI()def InitUI(self):# self.resize(300)self.setWindowTitle("QFileDialog Demo")layout = QVBoxLayout()self.btn1 = QPushButton("加載圖片")self.btn1.clicked.connect(self.loadImage)layout.addWidget(self.btn1)self.btn2 = QPushButton("加載文本")self.btn2.clicked.connect(self.loadText)layout.addWidget(self.btn2)self.btn3 = QPushButton("選擇文件夾")self.btn3.clicked.connect(self.openDir)layout.addWidget(self.btn3)self.DirLabel = QLabel("文件夾名稱")layout.addWidget(self.DirLabel)self.imageLabel = QLabel("----------")layout.addWidget(self.imageLabel)self.contents = QTextEdit()layout.addWidget(self.contents)self.setLayout(layout)def loadImage(self):# 選擇后綴名為,jpg和.png的圖片文件,并顯示在label中frame,_ = QFileDialog.getOpenFileName(self,"打開文件",".","Image files (*.jpg;*.png)")print(frame)self.imageLabel.setPixmap(QPixmap(frame))def loadText(self):dialog = QFileDialog()dialog.setFileMode(QFileDialog.AnyFile)dialog.setFilter(QDir.Files)if dialog.exec():filenames = dialog.selectedFiles()print(filenames)with open(filenames[0],encoding = "utf-8",mode='r') as f:data = f.read()self.contents.setText(data)def openDir(self):fname = QFileDialog.getExistingDirectory(self,"打開文件夾",".")self.DirLabel.setText("選擇文件夾:"+fname)if __name__ == '__main__':app = QApplication(sys.argv)mainWin = QFileDialogDemo()mainWin.show()sys.exit(app.exec_())

初始界面:

?選擇圖像對話框:

選擇文本對話框

選擇文件夾對話框:

?

?

?結果

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/255372.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/255372.shtml
英文地址,請注明出處:http://en.pswp.cn/news/255372.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 Mesos 管理虛擬機

摘要 為了滿足渲染、基因測序等計算密集型服務的需求,UCloud 推出了“計算工廠”產品,讓用戶可以快速創建大量的計算資源(虛擬機)。該產品的背后,是一套基于 Mesos 的計算資源管理系統。本文簡要介紹該系統的結構、Mes…

Swift數據類型_整型和浮點型

//swift中的整型和浮點型/***//類型推斷整數是Int 浮點數是Double ,日常使用需要注意不能越界,存儲時間毫秒數 英雄經驗數等等之類內容容易越界整型大多數情況下,你不需要在代碼中指定哪種整型。Swift提供了一種額外的整型,Int類型Java中的long型&#x…

Val編程-套接字

套接字的介紹:http://zh.wikipedia.org/wiki/Berkeley%E5%A5%97%E6%8E%A5%E5%AD%97 主要分為客戶端和服務器。客戶端一般是需要主動去鏈接,需要配置服務器的IP和端口。服務器是被動響應,需要打開相應的端口。端口一般不推薦使用系統端口和常用…

【pyqt5學習】——Qpainter控件學習(文本、圖像、各種圖形)

目錄 1、作用及應用步驟 2、繪制文本drawText() 3、像素級別繪制點(正弦曲線為例) 4、繪制不同樣式的直線 5、繪制弧形、圓形、扇形、圖像等 6、畫刷填充區域QBrush 1、作用及應用步驟 QPainter是一個用于繪制的類,該類可以用于繪制&…

反向代理與Real-IP和X-Forwarded-For(轉)

如下圖所示,客戶端通過Nginx Proxy1 和 Nginx Proxy2 兩層反向代理才訪問到具體服務Nginx Backend(或如Tomcat服務)。那Nginx Backend如何才能拿到真實客戶端IP呢? 接下來我們來看看如何才能獲取到客戶端真實IP。 場景1  場景1是…

Android studio打開之后 cannot load project: java.lang.NUllpointerException

參考來源:http://bbs.csdn.net/topics/391014393 關閉網絡,重新打開Android studio就好了。(但是原因不清楚是為什么?) Internal error. Please report to http://code.google.com/p/android/issuescom.intellij.ide.p…

Val編程-任務編程

不同任務之間可以通過一個標志符來實現互斥事件。 程序代碼&#xff1a; Task2 <span style"font-size:12px;">beginwhile truewait(bTaskFlag)cls()gotoxy(1,1)put("這是Task2")gotoxy(1,2)if bTaskFlagput("BFlag:true ")elseput(&…

【pyqt5學習】——拖拽功能(DragDrop)、剪切板(QApplication.clipboard)

目錄 1、拖拽功能&#xff08;Drag&Drop&#xff09; 2、剪切板&#xff08;QApplication.clipboard&#xff09; 1、拖拽功能&#xff08;Drag&Drop&#xff09; 選擇文本輸入框中的文本&#xff0c;移動到下拉框中自動添加步驟&#xff1a; 1、將文本輸入框設置為可…

oracle12c之 控制pdb中sga 與 pga 內存使用

Memory Management using Resource Manager Oracle數據庫資源管理器(資源管理器)現在可以在多租戶容器數據庫(CDB)中管理可插入數據庫(PDBs)之間的內存使用。這一特性有助于在CDB中維護所有PDBs的性能&#xff0c;確保所有的PDBs都不會占用更多資源&#xff0c;從而導致其他PDB…

[LeetCode] 21. Merge Two Sorted Lists ☆

Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 解法&#xff1a; 新建一個鏈表&#xff0c;依次比較兩個鏈表的頭元素&#xff0c;把較小的移到新鏈表中&#xff0c;直到有…

Val編程-特殊函數使用

Waitendmove()和$Waitendmove()使用心得 這是兩個部分&#xff0c;程序運行部分和運動堆棧部分&#xff0c;waitendmove是兩個部分進行交互的一個函數。 一般情況下waitendmove()速度會降到0&#xff0c;相當于blend等于off. 代碼&#xff1a; begincls()userPage()title("…

Redis的五種數據結構

Redis支持持久化只是它的一件武器&#xff0c;它提供了多達5種數據存儲方式&#xff1a; 一 string&#xff08;字符串&#xff09; string是最簡單的類型&#xff0c;你可以理解成與Memcached一模一樣的類型&#xff0c;一個key對應一個value&#xff0c;其上支持的操作與Mem…

【pyqt5學習】——QDateTimeEdit控件學習

目錄 1、同時顯示日期時間QDateTime 2、只顯示日期QDate 3、只顯示時間QTime 4、設置顯示的格式setDisplayFormat 5、 QDateTimeEdit常用信號 6、實例 1、同時顯示日期時間QDateTime # 同時顯示日期時間dateTimeEdit1 QDateTimeEdit()dateTimeEdit2 QDateTimeEdit(QDat…

復選框做成單選效果

function zlClick($id){ var eles document.getElementById($id).children; var srcEle event.srcElement; for(var i0;i<eles.length;i){ if(srcEle.checked){ if(eles[i].value!srcEle.value){ eles[i].checkedfalse; } } } } 技術領域可信計算 其他 申請日 200020012…

013. MVC5過濾器

微軟提供了4中過濾器: 1.Action過濾器: 在Action方法執行之前和Action方法執行之后, 會執行此過濾器中的代碼. 比如在執行public ActionResult Index()方法之前或之后; 也可以說是在方法執行前或執行后; 接口: IactionFilter 抽象類名: ActionFilterAttribute 添加一個實現…

Val編程-讀取漢字

Val編程-讀取漢字 Val編程中&#xff0c;對于漢字的讀取不是很友好&#xff0c;利用fileget直接讀取記事本產生的文件字符串會導致亂碼的產生。因為Val只支持使用utf-8進行編碼&#xff0c;因此讀取的文本需要進行utf-8格式轉換。 在GBK中&#xff0c;漢字占兩個字節。并且…

【pyqt5學習】——菜單欄(QMenu())、工具欄QToolBar學習

目錄 1、菜單欄&#xff08;QMenu()&#xff09;——一般在窗口頂部 1&#xff09;創建菜單欄步驟 2&#xff09;信號與方法 3&#xff09;實操 2、工具欄——一般在菜單欄下方 1&#xff09;創建步驟 2&#xff09;方法與信號 信號&#xff1a; 方法&#xff1a; 3&am…

Java核心技術及面試指南 異常部分的面試題歸納以及答案

4.2.4.1 throw和throws有什么差別&#xff1f;異常&#xff08;Exception&#xff09;和錯誤&#xff08;Error&#xff09;有什么差別&#xff1f; throw語句表示拋出異常&#xff0c;由方法體內的語句處理。throws語句用在方法聲明后面&#xff0c;表示如果拋出異常&#xff…

win7win10 配置wlan熱點

win7 & win10 系統自帶wlan功能&#xff0c;配置方法如下&#xff1a; 命令行輸入: 1. netsh wlan set hostednetwork mode allow ssid "Haha" key12345678 2. netsh wlan start hostednetwork netsh wlan show hostednetwork 轉載于:https://www.cnblogs.com/…

java---Socket編程出現的異常種類

.java.net.SocketTimeoutException.這個異常比較常見&#xff0c;socket超時。一般有2個地方會拋出這個&#xff0c;一個是connect的時候&#xff0c;這個超時參數由connect(SocketAddress endpoint,int timeout)中的后者來決定&#xff0c;還有就是setSoTimeout(int timeout)&…