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()