PyQt4 學習筆記5之對話方塊
阿新 • • 發佈:2019-02-06
PyQt4中的對話方塊
單擊此處檢視原文。
對話方塊視窗或對話方塊時現代GUI程式不可或缺的一部分。對話方塊被定義為兩個或兩個以上的人之間的談話。在計算機應用程式中,對話方塊用於和應用程式“談話”。一個對話方塊可以用於輸入資料、修改資料、改變應用程式配置等。
1 輸入對話方塊
QtGui.QInputDialog提供了一個簡單的用於獲取使用者單一值的對話方塊,輸入的值可以是字串、數字或者列表中的某一項。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Example (QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.btn = QtGui.QPushButton('Dialog', self)
self.btn.move(20, 20)
self.btn.clicked.connect(self.showDialog)
self.le = QtGui.QLineEdit(self)
self.le.move(130 , 22)
self.setGeometry(300, 300, 290, 150)
self.setWindowTitle('Input dialog')
self.show()
def showDialog(self):
# 建立輸入對話方塊,並獲取使用者輸入。
# 第一個字串時對話方塊標題,第二個字串是對話方塊顯示的訊息內容
# 對話方塊返回使用者輸入的文字和一個布林值。當點選‘Ok’按鈕時,布林值為True。
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog' , 'Enter your name:')
if ok:
# 將接收自對話方塊的內容在行編輯輸入框中顯示。
self.le.setText(str(text))
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在上述的示例中,我們建立了一個按鈕和一個行輸入編輯框。按鈕用於顯示輸入對話方塊並獲取輸入值,使用者輸入的資料將會在行輸入編輯框中顯示。
2 調色盤對話方塊
QtGui.QColorDialog提供了顏色選擇對話方塊。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
# 初始化QtGui.QFrame的背景顏色。
col = QtGui.QColor(0, 0, 0)
self.btn = QtGui.QPushButton('Dialog', self)
self.btn.move(20, 20)
self.btn.clicked.connect(self.showDialog)
self.frm = QtGui.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 = QtGui.QColorDialog.getColor()
# 檢測顏色值是否有效。如果點選‘Cancel’按鈕,返回無效的顏色值;
# 如果顏色值有效,則改變QtGui.QFrame的背景顏色。
if col.isValid():
self.frm.setStyleSheet('QWidget { background-color: %s }' % col.name())
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
上面的示例程式中建立了一個按鈕和一個QtGui.QFrame物件。QtGui.QFrame物件的背景顏色設定為黑色,通過使用QtGui.QColorDialog,我們可以修改起背景顏色。
3 字型對話方塊
QtGui.QFontDialog用於建立字型選擇對話方塊。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
vbox = QtGui.QVBoxLayout()
btn = QtGui.QPushButton('Dialog', self)
btn.setSizePolicy(QtGui.QSizePolicy.Fixed, QtGui.QSizePolicy.Fixed)
btn.move(20, 20)
vbox.addWidget(btn)
btn.clicked.connect(self.showDialog)
self.lb1 = QtGui.QLabel('Knowledge only matters', self)
self.lb1.move(130, 20)
vbox.addWidget(self.lb1)
self.setLayout(vbox)
self.setGeometry(300, 300, 250, 180)
self.setWindowTitle('Font dialog')
self.show()
def showDialog(self):
# 彈出字型對話方塊,getFont()方法返回字型名和一個布林值。當
# 點選‘Ok’按鈕時,該布林值為True,否則為False。
font, ok = QtGui.QFontDialog.getFont()
if ok:
# 改變標籤的字型。
self.lb1.setFont(font)
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
在上述示例中,我們建立了一個按鈕以及一個標籤。通過按鈕,我們可以呼叫QtGui.QFontDialog對話方塊設定字型,從而改變標籤的字型。
檔案對話方塊
QtGui.QFileDialog允許使用者選擇檔案或目錄。它可以用來選擇開啟或儲存檔案。
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtGui
class Example(QtGui.QMainWindow):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
self.textEdit = QtGui.QTextEdit()
self.setCentralWidget(self.textEdit)
self.statusBar()
openFile = QtGui.QAction(QtGui.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, 250, 180)
self.setWindowTitle('File dialog')
self.show()
def showDialog(self):
# 第一個字串引數指定標題,第二個字串引數指定對話方塊的工作目錄。
# 預設情況下,檔案過濾設定為所有檔案(*)。
fname = QtGui.QFileDialog.getOpenFileName(self, 'Open file', '/home')
f = open(fname, 'r')
with f:
# 讀取檔案內容,並在文字編輯對話方塊中顯示。
data = f.read()
self.textEdit.setText(data)
def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
上述示例中,我們建立了一個選單欄,一個居中的文字輸入框以及狀態列。選單項將建立一個QtGui.QFileDialog檔案選擇對話方塊用於選擇檔案,該檔案的內容將被載入到文字輸入框中。
由於我們將文字輸入框居中放置,因此基於QtGui.QMainWindow。