PyQt5 中QDialog值传递
2018-06-18 03:21:34来源:未知 阅读 ()
在应用PyQt5设计GUI界面时,经常会遇到输入或选择多个参数的问题,把它写到一个窗体中,会显得主窗体很臃肿。所以一般是添加一个按钮,调用对话框,将这些参数选择放入弹出的对话框中,关闭对话框时将参数值返回给主窗体。实现方法是应用PyQt5中 PyQt5.QtWidgets中QDialog类。其中PyQt5内部实现了一些诸如QInputDialog等标准对话框,这些标准对话框都继承自QDialog。在另一些情况我们需要自己写一些自定义对话框并将对话框中的某些值传送到主窗口内。
例如,我在工程中需要通过对话框设置文件的路径并将参数传送到主窗口,可以选择内置的QInputDialog直接输入路径传送,也可以选择QFileDialog调用文件对话框选择文件直接返回文件绝对路径。在实际使用中我们常把这两种结合在一起使用。功能为打开一自定义对话框,可点击按钮调用QfileDialog调用文件对话框选择文件,文件路径返回到文本框上显示并传递到主窗口,也可通过再文本框内直接输入文件绝对路径。
1 class DbPathDialog(QDialog, Ui_dbpathDialog): 2 3 def __init__(self, parent=None): 4 super().__init__(parent) 5 self.setupUi(self) # 窗口界面 6 self.openfileButton.clicked.connect(self.set_db_path) # 定义了一个openfileButton 点击时将信号发送到self.set_db_path槽函数 7 self.filename = os.path.join(os.getcwd(), 'Setting.db') # 定义了一个文件的默认地址 8 if not os.path.exists(self.filename): # 当该路径不存在时调用self.set_db_path() 9 self.set_db_path() 10 else: 11 self.lineEdit.setText(self.filename) # 当该路径存在时文件路径默认为默认路径 12 13 @pyqtSlot() # 槽函数,okButton点击时触发 14 def on_okButton_clicked(self): 15 if not os.path.isfile(self.lineEdit.text()): # 判断路径是否是文件 16 info = self.lineEdit.text() + ' is not an available file' 17 prompt = QMessageBox.information(self, '提示', info, QMessageBox.Ok, QMessageBox.Ok) 18 self.set_db_path() 19 else: 20 self.close() 21 22 def set_db_path(self): 23 '''打开文件对话框,并把选择文件的路径设置再lineEdit文本输入框上''' 24 self.filename = QFileDialog.getOpenFileName(self, 25 r'选择配置文件', 26 r'', 27 r'db Files(*.db)') 28 if self.filename[0] != '': 29 self.lineEdit.setText(self.filename[0]) 30 31 def db_path(self): 32 return self.lineEdit.text() 33 34 @staticmethod 35 def get_db_path(parent = None): 36 '''在静态函数中实例化该类,并调用.exec_()函数来显示执行这个对话框。实现值传递''' 37 dialog = DbPathDialog(parent) 38 result = dialog.exec_() 39 path = dialog.db_path() 40 return path
在主窗口中调用静态函数方法,就可以得到传递的参数值,代码如下:
1 path = DbPathDialog.get_db_path()
第二种调用方法:直接在主窗口程序中实例化该对话框,然后调用该对话框的函数来获取返回值。
1 dlg = DbPathDialog() 2 result = dlg.exec_() 3 path = dialog.db_path() 4 dlg.destroy()
这两种方法的本质都是实例化对话框类,调用该对话框的函数获取需要的值,而使用静态函数方法只是将这些过程进行的封装。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Python入门学习——PyQt5程序基本结构 2019-07-24
- PyQt5+requests实现车票查询工具 2019-05-08
- python+pyqt5实现24点小游戏 2019-05-04
- pyqt5与QML开发小结 2019-04-11
- scrapy的一些容易忽视的点(模拟登陆,传递item等) 2019-04-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash