午夜视频在线网站,日韩视频精品在线,中文字幕精品一区二区三区在线,在线播放精品,1024你懂我懂的旧版人,欧美日韩一级黄色片,一区二区三区在线观看视频

分享

PyQt5教程——對話框(6)

 刮骨劍 2019-03-07

PyQt5中的對話框

對話框窗口或?qū)υ捒蚴谴蠖鄶?shù)主流GUI應(yīng)用不可缺少的部分。對話是兩個或更多人之間的會話。在計算機應(yīng)用中,對話框是一個用來和應(yīng)用對話的窗口。對話框可以用來輸入數(shù)據(jù),修改數(shù)據(jù),改變應(yīng)用設(shè)置等等。

輸入對話框

QInputDialog提供了一個簡單便利的對話框用于從用戶那兒獲得只一個值。輸入值可以是字符串,數(shù)字,或者一個列表中的列表項。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
ZetCode PyQt5 tutorial
In this example, we receive data from
a QInputDialog dialog.
author: Jan Bodnar
website:
last edited: January 2015
"""
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_())

例子中有一個按鈕和一個單行編輯框組件。按下按鈕會顯示輸入對話框用于獲得一個字符串值。在對話框中輸入的值會在單行編輯框組件中顯示。

1
2
text, ok = QInputDialog.getText(self, 'Input Dialog',
    'Enter your name:')

這一行會顯示一個輸入對話框。第一個字符串參數(shù)是對話框的標題,第二個字符串參數(shù)是對話框內(nèi)的消息文本。對話框返回輸入的文本內(nèi)容和一個布爾值。如果我們點擊了Ok按鈕,布爾值就是true,反之布爾值是false(譯者注:也只有按下Ok按鈕時,返回的文本內(nèi)容才會有值)。

1
2
if ok:
    self.le.setText(str(text))

把我們從對話框接收到的文本設(shè)置到單行編輯框組件上顯示。

Input dialogFigure: Input dialog

顏色選擇對話框

QColorDialog類提供了一個用于選擇顏色的對話框組件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
ZetCode PyQt5 tutorial
In this example, we select a color value
from the QColorDialog and change the background
color of a QFrame widget.
author: Jan Bodnar
website:
last edited: January 2015
"""
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_())

例子中顯示了一個按鈕和一個QFrame。將QFrame組件的背景設(shè)置為黑色。使用顏色選擇框類,我們可以改變它的顏色。

1
col = QColor(0, 0, 0)

初始化QtGuiQFrame組件的背景顏色。

1
col = QColorDialog.getColor()

這一行彈出顏色選擇框。

1
2
3
if col.isValid():
    self.frm.setStyleSheet("QWidget { background-color: %s }"
        % col.name())

如果我們選中一個顏色并且點了ok按鈕,會返回一個有效的顏色值。如果我們點擊了Cancel按鈕,不會返回選中的顏色值。我們使用樣式表來定義背景顏色。

字體選擇框

 QFontDialog是一個用于選擇字體的對話框組件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
ZetCode PyQt5 tutorial
In this example, we select a font name
and change the font of a label.
author: Jan Bodnar
website:
last edited: January 2015
"""
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_())

在我們的例子中,我們有一個按鈕和一個表情。通過字體選擇對話框,我們可以改變標簽的字體。

1
font, ok = QFontDialog.getFont()

在這兒我們彈出一個字體對話框。getFont()方法返回字體名字和布爾值。如果用戶點擊了OK,布爾值為True;否則為False。

1
2
if ok:
    self.label.setFont(font)

如果我們點擊了Ok按鈕,標簽字體會被改變。

Font dialogFigure: Font dialog

文件對話框

文件對話框是用于讓用戶選擇文件或目錄的對話框。可以選擇文件的打開和保存。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
ZetCode PyQt5 tutorial
In this example, we select a file with a
QFileDialog and display its contents
in a QTextEdit.
author: Jan Bodnar
website:
last edited: January 2015
"""
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_())

示例中顯示了一個菜單欄,中間設(shè)置了一個文本編輯框組件,和一個狀態(tài)欄。點擊菜單項會顯示QtGui.QFileDialog(文件選擇框)對話框,用于選擇一個文件。文件的內(nèi)容會被讀取并在文本編輯框組件中顯示。

1
2
3
4
5
6
class Example(QMainWindow):
     
    def __init__(self):
        super().__init__()
         
        self.initUI()

示例基于QMainWindow組件,因為我們中心需要設(shè)置一個文本編輯框組件。

1
fname = QFileDialog.getOpenFileName(self, 'Open file', '/home')

彈出文件選擇框。第一個字符串參數(shù)是getOpenFileName()方法的標題。第二個字符串參數(shù)指定了對話框的工作目錄。默認的,文件過濾器設(shè)置成All files (*)。

1
2
3
4
5
6
if fname[0]:
    f = open(fname[0], 'r')
    with f:
        data = f.read()
        self.textEdit.setText(data)

選中文件后,讀出文件的內(nèi)容,并設(shè)置成文本編輯框組件的顯示文本、

File DialogFigure: File dialog

這部分的PyQt5教程中,我們學(xué)習(xí)了幾種對話框的使用。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多