本文共 3391 字,大约阅读时间需要 11 分钟。
在写pyQt时,经常会遇到输入或选择多个参数的问题,把它写到一个窗体中,会显得主窗体很臃肿。所以一般是添加一个按钮,调用对话框,将这些参数选择放入弹出的对话框中,关闭对话框时将参数值返回给主窗体。
pyQT中提供一些标准的对话框类,可以用于输入数据,修改数据,更改应用的设置等等,如常见的QFileDialog、QInputDialog、QColorDialog、QFontDialog等。具体的使用例子可以参考:
另外,也可以自定义对话框,通过在自定义对话框类中实现静态函数来传值。先来个例子:
# -*- coding: utf-8 -*- """ Created on Wed Jul 15 16:18:59 2015 @author: Administrator """ from PyQt4.QtCore import * from PyQt4.QtGui import * class DateDialog(QDialog): def __init__(self, parent = None): super(DateDialog, self).__init__(parent) layout = QVBoxLayout(self) # nice widget for editing the date self.datetime = QDateTimeEdit(self) self.datetime.setCalendarPopup(True) self.datetime.setDateTime(QDateTime.currentDateTime()) layout.addWidget(self.datetime) # OK and Cancel buttons buttons = QDialogButtonBox( QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self) buttons.accepted.connect(self.accept) buttons.rejected.connect(self.reject) layout.addWidget(buttons) # get current date and time from the dialog def dateTime(self): return self.datetime.dateTime() # static method to create the dialog and return (date, time, accepted) @staticmethod def getDateTime(parent = None): dialog = DateDialog(parent) result = dialog.exec_() date = dialog.dateTime() return (date.date(), date.time(), result == QDialog.Accepted)
主要注意几点: 1、使用两个button(ok和cancel)分别连接accept()和reject()槽函数。 2、实现一个静态函数,将参数通过该函数传出。 3、在静态函数中实例化该类,并调用.exec_()函数来显示执行这个对话框。 4、通过.exec_()的返回值来判断用户点的是ok还是cancel按钮,进而做出下一步判断。
date, time, ok = DateDialog.getDateTime()
dialog = DateDialog(self) result = dialog.exec_() date = dialog.dateTime() print date.date(),date.time(),result dialog.destroy()
dialog = DateDialog(self) if dialog.exec_(): date = dialog.dateTime() print date.date(),date.time(),result dialog.destroy()
转载地址:http://wrhci.baihongyu.com/