首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为GUI开发设置PySide/Qt

为GUI开发设置PySide/Qt
EN

Stack Overflow用户
提问于 2013-07-22 12:15:06
回答 4查看 4.3K关注 0票数 3

我一直试图设置PySide/Qt,以便与Python3.3一起使用。我安装了

代码语言:javascript
复制
PySide-1.2.0.win32-py3.3.exe 

我从这里和我安装的

代码语言:javascript
复制
qt-win-opensource-4.8.5-vs2010

我从这里那里拿走的。

我使用.py 正如在PySide Wiki中所解释的.ui文件(使用QtDesigner创建的文件)生成pyside-uic.exe文件。

当我使用Qt5.1/QtCreator时,使.py文件工作正常。当我发现需要使用Qt4.8 如在Qt论坛上所解释的那样时,我就停止使用它了。对于Qt4.8,它不起作用。

  • 我想使用PySide开发GUI。
  • 我想要一个拖放界面来制作一个框架图形用户界面,所以我使用的是QtDesigner。
  • 我在Windows 7上

我想将开发的图形用户界面打包成.exe文件,使用cx-冻结。

简单地说,我的问题,

.ui制作QtDesigner的正确工具是什么?如何将它们转换为.py文件,以便使用PySide在Python中使用?

cx_freeze能够将我的普通文件转换为.exe,它能用来将Qt/PySide生成的GUI转换成.exe文件吗?在图形用户界面的.exe被分发的其他计算机上,Qt是需要的吗?还是它是自我包含的?

我用过

代码语言:javascript
复制
cxfreeze testGUI.py  --include-modules=PySide

若要生成exe和相关文件,请执行以下操作。创建了一个包含多个文件的目录dist。在跑步的时候什么都没发生。所以我用命令行来找出原因。错误是

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Python33\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 27, in <module>
    exec(code, m.__dict__)
  File "testGUI.py", line 12, in <module>
  File "C:\Python\32-bit\3.3\lib\importlib\_bootstrap.py", line 1558, in _find_and_load
  File "C:\Python\32-bit\3.3\lib\importlib\_bootstrap.py", line 1525, in _find_and_load_unlocked
  File "C:\Python33\lib\site-packages\PySide\__init__.py", line 55, in <module>
    _setupQtDirectories()
  File "C:\Python33\lib\site-packages\PySide\__init__.py", line 11, in _setupQtDirectories
    pysideDir = _utils.get_pyside_dir()
  File "C:\Python33\lib\site-packages\PySide\_utils.py", line 87, in get_pyside_dir
    return _get_win32_case_sensitive_name(os.path.abspath(os.path.dirname(__file__)))
  File "C:\Python33\lib\site-packages\PySide\_utils.py", line 83, in _get_win32_case_sensitive_name
    path = _get_win32_long_name(_get_win32_short_name(s))
  File "C:\Python33\lib\site-packages\PySide\_utils.py", line 58, in _get_win32_short_name
    raise WinError()
FileNotFoundError: [WinError 3] The system cannot find the path specified.

有人知道这堆痕迹是什么意思吗?

这里有很多win32。但我有Windows 7 64位。我使用32位Python,所有模块都安装了32位。这会引起麻烦吗?我认为它不应该像我为简单Python脚本创建的其他exe那样执行得很好。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-08-08 09:21:49

考虑到FileNotFoundError,几天来我在打包python 3应用程序时遇到了问题。在windows 7 64位机上,它工作得很好。当我在win7 32位上构建它并试图运行.exe文件时,我得到了所有这些文件错误。看到这个线程后,我检查了pyside的版本。在win64上,在win32上是1.1.2,在win32上卸载pyside 1.2.0,下载并安装1.1.2 win32版本。现在可以用了。这可能是在1.2.1发布之前的止损措施。

票数 1
EN

Stack Overflow用户

发布于 2013-07-22 22:33:10

此错误:

代码语言:javascript
复制
FileNotFoundError: [WinError 3] The system cannot find the path specified.

将在下一次pyside释放中修复(1.2.1)。它将于下周发布。

注意:如果您不想生成自定义绑定,则不需要安装qt,pyside安装程序包含所有qt库和devel工具。

票数 5
EN

Stack Overflow用户

发布于 2013-07-22 15:36:05

我正在做类似的事情(不过,我正在从PyQt迁移到PySide)。

在QtCreator中创建UI文件之后,您应该使用pyside-uic为GUI生成代码(如果这是PyQt "pyuic gui.ui > gui.py“将产生所需的代码,我假设pyside-uic有类似的行为)。然后,我对生成的代码进行子类,以自定义用户界面。

是的,您可以在PyQt/PySide中使用cx_freeze,您希望在构建选项中的“包含”项中包括PySide。

是的,您可以创建一个完全独立的可执行文件--您不需要Python、Qt或其他任何东西。

下面是我从我的PySide GUI应用程序中使用的构建。

代码语言:javascript
复制
__author__ = 'AlexM'
import sys
from cx_Freeze import setup, Executable
import MyPySideGui
import PySide, os

base = None
if sys.platform == "win32":
    base = "Win32GUI"

QGifRelDir = "imageformats\qgif4.dll"
PySideDir = (os.path.join(os.path.dirname(PySide.__file__),"plugins"))

shortcut_table = [
    ("App Shortcut",                 # Shortcut
     "ProgramMenuFolder",            # Directory_
     "MyPySideGUI",                  # Name
     "TARGETDIR",                    # Component_
     "[TARGETDIR]MyPySideApp.exe",   # Target
     None,                           # Arguments
     None,                           # Description
     None,                           # Hotkey
     None,                           # Icon
     None,                           # IconIndex
     None,                           # ShowCmd
     'TARGETDIR'                     # WkDir
     )
]

build_exe_options = {
    "include_files" : ["documentTemplate.html", "loading.gif", (os.path.join(PySideDir,QGifRelDir), QGifRelDir)],
    "packages" : ["CustomHelperPackage", "AnotherCustomPackage", "MyPySideGui"],
    "includes" : ["PySide"],
    "excludes" : ["tkinter"],
    'optimize': 2,
}

# Now create the table dictionary
msi_data = {"Shortcut": shortcut_table}

# Change some default MSI options and specify the use of the above defined tables
bdist_msi_options = {'data': msi_data}

executables = [ Executable("MyPySideGui.py", base = base) ]

setup(
    name = "MyFirstPySideApplication",
    version = str(MyPySideGui.version),
    description = "MyPySideApp.exe Demonstrates PySide guis.",
    options = {
        "build_exe": build_exe_options,
        "bdist_msi": bdist_msi_options
    },
    executables = executables
)

对于您来说,这个示例可能有点复杂,但是您可以在cx_freeze项目主页上找到更简单的示例。

我没有得到您或其他答案所带来的问题,但接下来我将使用Python3.3.1和PySide 1.1.2。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17787315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档