您的位置:首页 > 其它

PySide学习笔记第九章-对话框

2016-04-30 18:35 316 查看
PySide中的对话框

对话框是用来和应用交流的,比如输入数据,更改数据,改变应用设置,对话框是用户和电脑程序的一种重要的交流方式

一、QtGui.QInputDialog 提供了一个简便的对话框可以让用户输入数值(数值可以是:字符串,数值,也可以是一个list中的一项)。

# -*- coding: utf-8 -*-

"""
ZetCode PySide tutorial
In this example, we receive data from
a QtGui.QInputDialog dialog.
author: Jan Bodnar
website: zetcode.com
last edited: August 2011
"""
import sys
from PySide import QtGui

class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()

self.initUI()

def initUI(self):
self.btn = QtGui.QPushButton('Dialog', self) # 创建一个button,然后设定其位置
self.btn.move(20, 20)
self.btn.clicked.connect(self.showDialog) # 将button点击的信号和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): # 定义槽函数
text, ok = QtGui.QInputDialog.getText(self, 'Input Dialog', # 创建一个输入对话框,参数分别为   self:当前 QtGui.QWidget
# ,'Input Dialog':title,'Input Dialog':对话框里的信息,
# 该函数返回两个值,返回输入的文本和一个boolean值(点击OK,返回true)
'Enter your name:')

if ok: # 如果点击OK
self.le.setText(str(text))

def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

if __name__ == '__main__':
main()

二、QtGui.QColorDialog提供了一个对话框来选择颜色

# -*- coding: utf-8 -*-

"""
ZetCode PySide tutorial
In this example, we select a colour value
from the QtGui.QColorDialog and change the background
colour of a QtGui.QFrame widget.
author: Jan Bodnar
website: zetcode.com
last edited: August 2011
"""
import sys
from PySide import QtGui

class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()

self.initUI()

def initUI(self):
col = QtGui.QColor(0, 0, 0) # 初始颜色

self.btn = QtGui.QPushButton('Dialog', self) # 创建一个按钮,然后设定其位置
self.btn.move(20, 20)

self.btn.clicked.connect(self.showDialog) # 将按钮的点击信号和self.showDialog函数槽联系起来

self.frm = QtGui.QFrame(self) # 创建一个颜色框,初始背景颜色为黑色(0,0,0)
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() # 弹出选择颜色的对话框,并返回你所选定的颜色(当你点击Ok后)

if col.isValid(): # 判断颜色是否有效,即你是否选定颜色后并点击了Ok
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.QFontDialog 用来选择字体,代码逻辑同上

# -*- coding: utf-8 -*-

"""
ZetCode PySide tutorial
In this example, we select a font name
and change the font of a label.
author: Jan Bodnar
website: zetcode.com
last edited: August 2011
"""
import sys
from PySide 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.lbl = QtGui.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 = QtGui.QFontDialog.getFont()
if ok:
self.lbl.setFont(font)

def main():
app = QtGui.QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())

if __name__ == '__main__':
main()

四、文件对话框

QtGui.QFileDialog 让用户来选择文件或者目录,既可以用来选择打开某个文件,也可以用来选择将文件存在某个目录下

import sys
from PySide 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('play.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, _ = 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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: