Форум сайта python.su
Привет всем! Никогда раньше не имел дела с созданием .exe файлов так что нужна ваша помощь.
Как сделать exe файл допустим из такого(form.py):
#!usr/bin/python
#-*- coding: utf-8 -*-
from PyQt4 import QtGui
import sys
app=QtGui.QApplication(sys.argv)
f=QtGui.QWidget()
b=QtGui.QPushButton("Закрыть",f)
b.clicked.connect(quit)
f.show()
app.exec_()
cd c:\
C:\Python31\Scripts\cxfreeze form.py --target-dir dist
Офлайн
Хочется exe файл? Кодируй на C++ или C#, нафига питона мучить?
Офлайн
Я лично делал так: в папке с фризом лежат примерчики в том числе и для PyQt, тама должен быть файлик setup.py. Посмотрев в него (всего то пару строк) и исправив для своей программы убедился, что “python setup.py –build” работатет без нареканий. Получится 18Мб папка с модулями библиотеками и экзешником. Говорят можно размер уменьшить, но я пока не заморачивался.
Офлайн
Хочется exe файл? Кодируй на C++ или C#, нафига питона мучить?Никто питон не мучает)))Мне то и без exe не стремно!А вот что ты принесешь заказчику?.py-от которого он будет в шоке или .exe-который не вызовет у него непоняток?я думаю все очевидно)))
Я лично делал так: в папке с фризом лежат примерчики в том числе и для PyQt, тама должен быть файлик setup.py. Посмотрев в него (всего то пару строк) и исправив для своей программы убедился, что “python setup.py –build” работатет без нареканий. Получится 18Мб папка с модулями библиотеками и экзешником. Говорят можно размер уменьшить, но я пока не заморачивался.Все спасибо будем ковырять и пробовать!
Офлайн
dartNNN короче я нашел пример там где ты сказал и сделал как там( и действительно все работает),НО если имеется База Данных то при запуске exe программа открывается, но не подключается модель к вьехе (QTableView)Вот код для формы(main.py):
#!usr\bin\python
#-*- coding: utf-8 -*-
from PyQt4 import QtGui,QtSql,QtCore
import sys
from database import Baza
class Proba(QtGui.QWidget):
def __init__(self):
QtGui.QWidget.__init__(self)
self.resize(300,300)
self.view=QtGui.QTableView(self)
model=QtSql.QSqlQueryModel()
model.setQuery("SELECT * FROM persons")
model.setHeaderData(0, QtCore.Qt.Horizontal, QtCore.QObject.trUtf8(model,"№"))
model.setHeaderData(1, QtCore.Qt.Horizontal, QtCore.QObject.trUtf8(model,"Имя"))
model.setHeaderData(2, QtCore.Qt.Horizontal, QtCore.QObject.trUtf8(model,"Фамилия"))
self.view.setModel(model)
button_add=QtGui.QPushButton("Добавить",self)
button_add.setGeometry(100,200,100,30)
button_del=QtGui.QPushButton("Удалить",self)
button_del.setGeometry(100,240,100,30)
button_add.clicked.connect(self.add_start)
button_del.clicked.connect(self.del_zapis)
def add_start(self):
self.form_add=QtGui.QWidget()
self.form_add.setWindowModality(QtCore.Qt.ApplicationModal)
kompanovka=QtGui.QVBoxLayout(self.form_add)
self.form_add.setGeometry(100,200,100,30)
label_name=QtGui.QLabel("Имя")
self.edit_name=QtGui.QLineEdit()
label_surname=QtGui.QLabel("Фамилия")
self.edit_surname=QtGui.QLineEdit()
button_apply=QtGui.QPushButton("ОК")
kompanovka.addWidget(label_name)
kompanovka.addWidget(self.edit_name)
kompanovka.addWidget(label_surname)
kompanovka.addWidget(self.edit_surname)
kompanovka.addWidget(button_apply)
self.form_add.show()
button_apply.clicked.connect(self.add_zapis)
def add_zapis(self):
a=self.edit_name.text()
b=self.edit_surname.text()
query=QtSql.QSqlQuery()
query.exec("INSERT INTO persons(name,surname) VALUES(:n,:s)")
query.bindValue(":n",a)
query.bindValue(":s",b)
query.exec_()
self.refresh()
self.form_add.hide()
def del_zapis(self):
if self.view.currentIndex().row()>=0:
row=self.view.currentIndex().row()
index=self.view.model().index(row,0)
id=str(self.view.model().data(index))
query=QtSql.QSqlQuery()
query.exec("DELETE FROM persons WHERE id=:id")
query.bindValue(":id",id)
query.exec_()
self.refresh()
def refresh(self):
model=QtSql.QSqlQueryModel()
model.setQuery("SELECT * FROM persons")
model.setHeaderData(0, QtCore.Qt.Horizontal,QtCore.QObject.trUtf8(model,"№"))
model.setHeaderData(1, QtCore.Qt.Horizontal, QtCore.QObject.trUtf8(model,"Имя"))
model.setHeaderData(2, QtCore.Qt.Horizontal, QtCore.QObject.trUtf8(model,"Фамилия"))
self.view.setModel(model)
app=QtGui.QApplication(sys.argv)
bd1=Baza()
bd1.connection_bd()
my_class=Proba()
my_class.show()
app.exec_()
#!usr\bin\python
#-*- coding: utf-8 -*-
from PyQt4 import QtSql
class Baza():
def connection_bd(self):
db=QtSql.QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("baza")
if not db.open():
print("Ошибка открытия БД!")
return False
query=QtSql.QSqlQuery()
query.exec("CREATE TABLE IF NOT EXISTS persons(id INTEGER PRIMARY KEY AUTOINCREMENT,name VARCHAR(30),surname VARCHAR(30))")
return True
import sys
from cx_Freeze import setup, Executable
base = None
if sys.platform == "win32":
base = "Win32GUI"
setup(
name = "main",
version = "0.1",
description = "Sample cx_Freeze PyQt4 script",
executables = [Executable("main.py", base = base)])
cd c:\
C:\setup.py build
Отредактировано (Апрель 9, 2010 19:07:15)
Офлайн
Проблема в том, что экзешник не видит ни одного драйвера, потому он к базе не коннектится. Копаю дальше
Офлайн
dartNNNДа я тоже где то это читал!там вроде говорилось что как то надо добавить sqlite3.dll(но я точно не помню)!Тоже буду копать по этой теме.
Проблема в том, что экзешник не видит ни одного драйвера, потому он к базе не коннектится. Копаю дальше
Отредактировано (Апрель 10, 2010 12:08:12)
Офлайн
Как я понимаю, драйвера sql находятся в папке Python31\Lib\site-packages\PyQt4\plugins\sqldrivers. Вот там собственно и лежит длл-ка qsqlite.dll. Пробовал я ее подключить через bin-includes, но епрст, никакого результата. Хз че с ним делать.
Офлайн
dartNNNВсе проблема решена)))
Как я понимаю, драйвера sql находятся в папке Python31\Lib\site-packages\PyQt4\plugins\sqldrivers. Вот там собственно и лежит длл-ка qsqlite.dll. Пробовал я ее подключить через bin-includes, но епрст, никакого результата. Хз че с ним делать.
Отредактировано (Апрель 10, 2010 15:06:12)
Офлайн
Ну это совсем просто идешь на сайт http://cx-freeze.sourceforge.net тама документация, все команды описаны, есть там и для иконки. И пишешь примерно так:
icon_file = "path/to/file"
buildOptions = dict(icon = icon_file)
setup(
name = "main",
version = "0.1",
description = "Sample cx_Freeze script",
options = dict(build_exe = buildOptions),
executables = [Executable("test.py", base = base)])
Офлайн