對話框窗口或?qū)υ捒蚴乾F(xiàn)代GUI應(yīng)用程序最不可或缺的一部分烙肺。一個對話框被定義為兩個或兩個以上的人之間的談話氧卧。在計算機應(yīng)用程序?qū)υ捒虼翱谟糜凇敖徽劇睉?yīng)用程序。一個對話框用于輸入數(shù)據(jù),修改數(shù)據(jù),更改應(yīng)用程序設(shè)置等怎栽。
6.1 QInputDialog
QInputDialog提供了一種簡單方便的對話框從用戶得到一個值宿饱。輸入值可以是字符串,一個數(shù)字强饮,或一個項目從一個列表为黎。
# -*- coding: utf-8 -*-
"""
author: BruceOu
last edited: 2020-06
"""
import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QLineEdit,
QInputDialog, QApplication)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.btn = QPushButton('Dialog', self)
self.btn.move(20, 20)
self.btn.clicked.connect(self.showDialog)
self.le = QLineEdit(self)
self.le.move(130, 22)
self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Input dialog')
self.show()
def showDialog(self):
text, ok = QInputDialog.getText(self, 'Input Dialog',
'Enter your name:')
if ok:
self.le.setText(str(text))
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
這個例子顯示一個按鈕和一個文本框行您,用戶點擊按鈕顯示一個輸入框娃循,用戶輸入信息會顯示在文本框中捌斧。
text, ok = QInputDialog.getText(self, 'Input Dialog',
'Enter your name:')
這行代碼顯示輸入對話框。第一個字符串是一個對話框標題,第二個是對話框中的消息捞蚂。對話框返回輸入的文本和一個布爾值。點擊Ok按鈕,布爾值是True姓迅。
if ok:
self.le.setText(str(text))
對話框收到的文本消息會顯示在文本框中
6.2 QColorDialog
QColorDialog顯示一個用于選擇顏色值的對話框丁存。
# -*- coding: utf-8 -*-
"""
author: BruceOu
last edited: 2020-06
"""
import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QFrame,
QColorDialog, QApplication)
from PyQt5.QtGui import QColor
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
col = QColor(0, 0, 0)
self.btn = QPushButton('Dialog', self)
self.btn.move(20, 20)
self.btn.clicked.connect(self.showDialog)
self.frm = QFrame(self)
self.frm.setStyleSheet("QWidget { background-color: %s }"
% col.name())
self.frm.setGeometry(130, 22, 100, 100)
self.setGeometry(300, 300, 250, 180)
self.setWindowTitle('Color dialog')
self.show()
def showDialog(self):
col = QColorDialog.getColor()
if col.isValid():
self.frm.setStyleSheet("QWidget { background-color: %s }"
% col.name())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
這個應(yīng)用程序顯示一個按鈕和一個QFrame柱嫌。QFrame的背景為黑色屯换。通過QColorDialog,我們可以改變它的背景彤悔。
col = QColor(0, 0, 0)
初始化QFrame的顏色為黑色
col = QColorDialog.getColor()
這一行代碼彈出QColorDialog
if col.isValid():
self.frm.setStyleSheet("QWidget { background-color: %s }"
% col.name())
我們要先檢查col的值。如果點擊的是Cancel按鈕晕窑,返回的顏色值是無效的杨赤。當顏色值有效時,我們通過樣式表(style sheet)來改變背景顏色植捎。
6.3 QFontDialog
QFontDialog對話框用以選擇字體
# -*- coding: utf-8 -*-
"""
author: BruceOu
last edited: 2020-06
"""
import sys
from PyQt5.QtWidgets import (QWidget, QVBoxLayout, QPushButton,
QSizePolicy, QLabel, QFontDialog, QApplication)
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
vbox = QVBoxLayout()
btn = QPushButton('Dialog', self)
btn.setSizePolicy(QSizePolicy.Fixed,
QSizePolicy.Fixed)
btn.move(20, 20)
vbox.addWidget(btn)
btn.clicked.connect(self.showDialog)
self.lbl = QLabel('Knowledge only matters', self)
self.lbl.move(130, 20)
vbox.addWidget(self.lbl)
self.setLayout(vbox)
self.setGeometry(300, 300, 250, 180)
self.setWindowTitle('Font dialog')
self.show()
def showDialog(self):
font, ok = QFontDialog.getFont()
if ok:
self.lbl.setFont(font)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
在這個例子中焰枢,我們創(chuàng)建了一個按鈕和一個標簽济锄,通過QFontDialog來改變標簽的字體
font, ok = QFontDialog.getFont()
這一行代碼彈出字體選擇對話框,getFont()方法返回字體名稱和ok參數(shù)荐绝,如果用戶點擊了ok他就是True,否則就是false
if ok:
self.label.setFont(font)
如果我們點擊了ok很泊,標簽的字體就會被改變
6.4 QFileDialog
QFileDialog是一個讓用戶選擇文件和目錄的對話框委造,可用以選擇打開或保存文件
# -*- coding: utf-8 -*-
"""
author: BruceOu
last edited: 2020-06
"""
import sys
from PyQt5.QtWidgets import (QMainWindow, QTextEdit,
QAction, QFileDialog, QApplication)
from PyQt5.QtGui import QIcon
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.textEdit = QTextEdit()
self.setCentralWidget(self.textEdit)
self.statusBar()
openFile = QAction(QIcon('open.png'), 'Open', self)
openFile.setShortcut('Ctrl+O')
openFile.setStatusTip('Open new File')
openFile.triggered.connect(self.showDialog)
menubar = self.menuBar()
fileMenu = menubar.addMenu('&File')
fileMenu.addAction(openFile)
self.setGeometry(300, 300, 350, 300)
self.setWindowTitle('File dialog')
self.show()
def showDialog(self):
fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')
if fname[0]:
f = open(fname[0], 'r')
with f:
data = f.read()
self.textEdit.setText(data)
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
這個例子展示了一個菜單欄昏兆,中部TextEdit控件和一個狀態(tài)欄妇穴。菜單項Open會顯示用于選擇文件的QtGui.QFileDialog對話框。選定文件的內(nèi)容會加載到TextEdit控件中跑筝。
class Example(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
示例窗體繼承自QMainWindow瞒滴,因為我們要將TextEdit控件置于窗體中央。
fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')
彈出QFileDialog對話框虏两,第一個字符串參數(shù)是對話框的標題定罢,第二個指定對話框的工作目錄,默認情況下文件篩選器會匹配所有類型的文件(*)
if fname[0]:
f = open(fname[0], 'r')
with f:
data = f.read()
self.textEdit.setText(data)
讀取了選擇的文件并將文件內(nèi)容顯示到了TextEdit控件旁瘫。
資源獲取方法
1.關(guān)注公眾號[AI實驗樓]
2.在公眾號回復(fù)關(guān)鍵詞[PyQt5]獲取資料提取碼
歡迎訪問我的網(wǎng)站
BruceOu的嗶哩嗶哩
BruceOu的主頁
BruceOu的博客
BruceOu的CSDN博客
BruceOu的簡書
BruceOu的知乎