Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 10, 2010 18:52:25

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

exe файл(cx_Freeze,Python 3.1,Pyqt4)

dartNNN
Ну это совсем просто идешь на сайт 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)])
Все спасибо почитал!



Отредактировано (Апрель 10, 2010 18:53:17)

Офлайн

#2 Апрель 18, 2010 11:21:34

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

exe файл(cx_Freeze,Python 3.1,Pyqt4)

Ммм… спустя некоторое время появился такой вопрос:
сначала вроде все работало нормально,а теперь появилась такая прикалюха:
когда exe файл собран и я запускаю его все работает нормально,Но стоит его перенести в другое место кидает такую ошибку:

cannot get zipimporter instance
Нашел что такая тема на Linux решается так:
http://www.fedoraforum.org/forum/showthread.php?t=84875

А как с этим бороться на OS:XP?

P.S хотя когда в первый день создал exe и переносил его куда-нибудь все прекрасно работало!В чем причина?



Отредактировано (Апрель 18, 2010 11:22:29)

Офлайн

#3 Ноя. 16, 2010 20:08:33

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

exe файл(cx_Freeze,Python 3.1,Pyqt4)

Привет,
спасибо за код приложения! А чем www.pyinstaller.org не подошел, для создания исполняемого файла?



Офлайн

#4 Ноя. 17, 2010 04:48:31

sypper-pit
От: Ulan-Ude(msk)
Зарегистрирован: 2009-01-30
Сообщения: 1102
Репутация: +  6  -
Профиль   Отправить e-mail  

exe файл(cx_Freeze,Python 3.1,Pyqt4)

py2exe же классика , почему не воспользовался ?

Офлайн

#5 Ноя. 17, 2010 06:09:50

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

exe файл(cx_Freeze,Python 3.1,Pyqt4)

А с каких времен py2exe и PyInstaller портировали на 3.1?



Офлайн

#6 Ноя. 17, 2010 17:30:28

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

exe файл(cx_Freeze,Python 3.1,Pyqt4)

Уважаемые гуру, подскажите почему примере есть метод

query.exec("DELETE FROM persons WHERE id=:id")
а в питоне 2.5 и PyQt 4.8 метод
query.exec_("DELETE FROM persons WHERE id=:id")
или под разные версии питона по разному написаны библиотеки Qt??
P.S. Всем спасибо!



Офлайн

#7 Ноя. 17, 2010 17:33:17

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

exe файл(cx_Freeze,Python 3.1,Pyqt4)

Андрей Светлов
А с каких времен py2exe и PyInstaller портировали на 3.1?
Спасибо за ответ на вопрос.
P.S. а слона то мы и не заметили!



Офлайн

#8 Ноя. 17, 2010 17:43:50

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

exe файл(cx_Freeze,Python 3.1,Pyqt4)

В python 2.x exec - ключевое слово. Соответственно, не может быть идентификатором.
В 3.0 сделали простой функцией в builtins namespace.
И сразу же стало можно делать другие функции и методы с таким же названием.



Офлайн

#9 Ноя. 17, 2010 19:14:45

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

exe файл(cx_Freeze,Python 3.1,Pyqt4)

Андрей Светлов
В python 2.x exec - ключевое слово. Соответственно, не может быть идентификатором.
В 3.0 сделали простой функцией в builtins namespace.
И сразу же стало можно делать другие функции и методы с таким же названием.
Спасибо за подробный ответ!



Офлайн

#10 Ноя. 18, 2010 06:10:20

qman
От:
Зарегистрирован: 2007-07-02
Сообщения: 444
Репутация: +  0  -
Профиль   Отправить e-mail  

exe файл(cx_Freeze,Python 3.1,Pyqt4)

Подскажите почему код, ниже приведенный, не добавляет записи в таблицу?

#!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(u"Добавить",self)
button_add.setGeometry(100,200,100,30)
button_del=QtGui.QPushButton(u"Удалить",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(u"Имя")
self.edit_name=QtGui.QLineEdit()
label_surname=QtGui.QLabel(u"Фамилия")
self.edit_surname=QtGui.QLineEdit()
button_apply=QtGui.QPushButton(u"ОК")
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):
print "call add_zapis"
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)
print "call exec_"
print query.exec_()
self.refresh()
self.form_add.hide()
print "call 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_()
или нужно вызвать commit для сохранения изменений в базе данных.
Код переделан для питона 2.х ( запускается на 2.5.4).
Всем спасибо за ответы.



Отредактировано (Ноя. 18, 2010 06:11:53)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version