我在Qt Designer中创建了一个窗体模型,现在我想将窗体保存为(exe?)文件,以便它可以在计算机上运行。如何从Qt Designer保存表单作为独立应用程序?
我会用 '的Python为EXE'(如果是,如何)?我对编程知之甚少。
Qt Designer保存带有.ui扩展名的文件。
我在Qt Designer中创建了一个窗体模型,现在我想将窗体保存为(exe?)文件,以便它可以在计算机上运行。如何从Qt Designer保存表单作为独立应用程序?
我会用 '的Python为EXE'(如果是,如何)?我对编程知之甚少。
Qt Designer保存带有.ui扩展名的文件。
要创建具有PyInstaller一个独立的应用程序请按照下列步骤操作:
这段代码保存为您MyWidget.ui文件:
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>147</width>
<height>125</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLineEdit" name="lineEdit"/>
</item>
<item>
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>Click Me</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>147</width>
<height>25</height>
</rect>
</property>
<widget class="QMenu" name="menuMenu">
<property name="title">
<string>Menu</string>
</property>
</widget>
<addaction name="menuMenu"/>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>
编译您MyWidget.ui文件到Ui_MyWidget.py使用pyuic4与您的操作系统的shell命令行命令:
pyuic4 "/path/to/MyWidget.ui" -o "Ui_MyWidget.py"
此命令将创建一个Ui_MyWidget.py文件在当前目录下有此内容:
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'MyWidget.ui'
#
# Created: Fri Dec 28 03:45:13 2012
# by: PyQt4 UI code generator 4.7.3
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(147, 125)
self.centralwidget = QtGui.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.verticalLayout = QtGui.QVBoxLayout(self.centralwidget)
self.verticalLayout.setObjectName("verticalLayout")
self.lineEdit = QtGui.QLineEdit(self.centralwidget)
self.lineEdit.setObjectName("lineEdit")
self.verticalLayout.addWidget(self.lineEdit)
self.pushButton = QtGui.QPushButton(self.centralwidget)
self.pushButton.setObjectName("pushButton")
self.verticalLayout.addWidget(self.pushButton)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtGui.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 147, 25))
self.menubar.setObjectName("menubar")
self.menuMenu = QtGui.QMenu(self.menubar)
self.menuMenu.setObjectName("menuMenu")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtGui.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.menubar.addAction(self.menuMenu.menuAction())
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
MainWindow.setWindowTitle(QtGui.QApplication.translate("MainWindow", "MainWindow", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("MainWindow", "Click Me", None, QtGui.QApplication.UnicodeUTF8))
self.menuMenu.setTitle(QtGui.QApplication.translate("MainWindow", "Menu", None, QtGui.QApplication.UnicodeUTF8))
将此代码另存您MyWidget.py文件:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
from PyQt4 import QtCore, QtGui
from Ui_MyWidget import Ui_MainWindow
class MyWidget(QtGui.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(MyWidget, self).__init__(parent)
self.setupUi(self)
@QtCore.pyqtSlot()
def on_pushButton_clicked(self):
self.lineEdit.setText("A Qt standalone app!")
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = MyWidget()
window.resize(300, 30)
window.show()
sys.exit(app.exec_())
检查可以运行MyWidget.py没有错误(MyWidget.py和Ui_MyWidget.py需要在同一个文件夹),做一次从你的操作系统配置PyInstaller(签README文件) shell命令行光盘插入pyinstaller目录并运行此命令:
python pyinstaller.py --onefile '/path/to/MyWidget.py'
寻找所谓进myWidget在pyinstaller文件夹,里面的dist文件夹是你独立的Qt应用程序。
太棒了! ...不知道它是否还能正常工作,我在第一部分不断收到语法错误。我试过把每个部分的完整路径(C:\ python27 \ etcetc)。错误似乎在“file_input”部分。 –
@DuhCompewtuhr你可以用你正在使用的代码更新你的文章吗?请考虑upvoting和/或接受我的答案,如果它有任何帮助 – 2012-12-27 19:55:11
我很高兴有这个问题的答案,但我还没有能够检查它,因为我是这样一个新手:( 这是我已经尝试了很多不同的组合。 >>> C:\ Python27 \ Lib \ site-packages \ PyQt4 \ pyuic4.bat C:\ MyWidget.ui -o C:\ Ui_MyWidget.py 文件 “
http://qt-project.org/forums/viewthread/4535 – CppLearner
我也发现了这一点,但不知道如何做的.ui为Pyinstaller一个的.py http://stackoverflow.com/questions/5888870/how-do-i-compile-a-pyqt-script-py-to-a-single-standalone-executable-file-for –
you can not。你需要编码。 Ui只是前端。没有逻辑。编码。 – CppLearner