Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 动态设置PyQt应用程序的版本_Python_Json_Pyqt4 - Fatal编程技术网

Python 动态设置PyQt应用程序的版本

Python 动态设置PyQt应用程序的版本,python,json,pyqt4,Python,Json,Pyqt4,我有一个PyQt应用程序,它有一个“关于”窗口,在这里我显示作者的姓名、联系人和应用程序的版本 我不想在每次发布新版本时都改变这个数字,所以现在我使用以下方法 我有一个命令行python脚本compile.py,它需要版本号,并使用pyinstaller编译为exe python compile.py 1.0.1 然后,此脚本更改json文件-data.json中的版本 {version:1.0.1;} 然后,在执行“About”对话框时,将从data.json中检索版本号 这是我的临时解决方案

我有一个PyQt应用程序,它有一个“关于”窗口,在这里我显示作者的姓名、联系人和应用程序的版本

我不想在每次发布新版本时都改变这个数字,所以现在我使用以下方法

  • 我有一个命令行python脚本compile.py,它需要版本号,并使用pyinstaller编译为exe

    python compile.py 1.0.1

  • 然后,此脚本更改json文件-data.json中的版本

    {version:1.0.1;}

  • 然后,在执行“About”对话框时,将从data.json中检索版本号

  • 这是我的临时解决方案,我觉得并不理想。是否有处理这种情况的“最佳做法”


    当然,我可以为此目的存储一个变量,并在每次发布新版本时对其进行更改,但这比我的解决方案更糟糕。

    问题是,您必须至少在某个地方键入一次新版本字符串,无论它是作为命令行参数还是作为文件中的一行-那么为什么不作为应用程序中的变量呢

    Qt实际上提供了用于执行此操作的API,因此在PyQt应用程序的开头可以有类似的内容:

    QApplication.setApplicationName('MyApp')
    QApplication.setApplicationVersion('1.0.1')
    
    由于这些函数是静态的,因此可以从应用程序中的任何位置访问这些值(甚至在创建
    QApplication
    对象本身之前,这对于命令行输出、日志记录等都很方便)

    此外,我将版本字符串视为应用程序的一部分,因此对其所做的任何更改都应该包含在版本控制历史记录中(通常是在发布新版本之前作为最终提交的一部分)