Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 4, 2010 14:23:11

Yarra
От:
Зарегистрирован: 2010-08-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Пара идиотских вопросов.

Пишу небольшую программку для поиска, добавления, измениния и удаления записей в БД.
В качестве БД - sqlite.
GUI - PyQt4.

проблема 1:

У меня разные окошки раскиданы по разным файлам.

Главное окно в одном, второе окно - в другом
Второе окно вызывается нажатием кнопки.

На сколько я понял нужно сделать функцию вызова окна.


    def eventFind(self):
wf = WidgetFind.WidgetFind()
wf.show()
p
При этом если после wf.show() не ставить ничего, то второе окно появляется и пропадает.
В какую сторону читать? Или пhо что.


Проблема номер 2:

У меня во втором окне происходит поиск по БД. Результат - список. Этот список мне надо передать в главное окно.
Единственный способ который я нашел - в файле с типами данных сделать класс и ему передать ему значения этого списка. Как это можно сделать еще?
Или где об этом почитать :)



Главное окно:

#-*- coding: utf-8 -*-
#unicode('', "cp1251")

import sys
import Logic, WidgetAdd, WidgetFind, WidgetUpdate
from DataTypes import Item, List
from PyQt4 import QtGui
from PyQt4 import QtCore


class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)

self.setWindowTitle (unicode ('Картотека обозначений', "cp1251")) # имя окна
self.setGeometry(4,25,1280,800) # положение + размер
self.statusBar().showMessage(unicode('Программа готова к работе', "cp1251"))


self.find = QtGui.QPushButton(unicode('Поиск', "cp1251") ,self)
self.find.setShortcut('Ctrl+F')
self.find.setStatusTip(unicode('Поиск в классификаторе', "cp1251"))
self.connect(self.find,QtCore.SIGNAL('clicked()'), self.eventFind)

self.prnt = QtGui.QPushButton('Print', self)
self.connect(self.prnt,QtCore.SIGNAL('clicked()'), self.Prnt)

self.add = QtGui.QPushButton(unicode('Добавить', "cp1251"), self)
self.add.setShortcut('Ctrl+A')
self.add.setStatusTip(unicode('Добавить запись', "cp1251"))
# self.connect(self.add, QtCore.SIGNAL('clicked()'), self.eventAdd)

self.update = QtGui.QPushButton(unicode('Изменить', "cp1251"), self)
self.update.setShortcut('Ctrl+U')
self.update.setStatusTip(unicode('Изменить запись', "cp1251"))
# self.connect(self.update, QtCore.SIGNAL('clicked()'), self.eventUpdate)

self.delete = QtGui.QPushButton(unicode('Удалить', "cp1251"), self)
self.delete.setShortcut('Ctrl+D')
self.delete.setStatusTip(unicode('Удалить запись', "cp1251"))
# self.connect(self.delete, QtCore.SIGNAL('clicked()'), self.eventDelete)

self.quit = QtGui.QPushButton(unicode('Выйти', "cp1251"), self)
self.quit.setShortcut('Ctrl+X')
self.quit.setStatusTip(unicode('Выйти из программы', "cp1251"))
self.connect(self.quit,QtCore.SIGNAL('clicked()'), QtCore.SLOT('close()'))

self.button_widget = QtGui.QWidget()
self.button_widget.setMaximumSize (350, 100)
self.setCentralWidget(self.button_widget)

self.button_layout = QtGui.QGridLayout()
self.button_widget.setLayout(self.button_layout)

self.buttons_layout = QtGui.QGridLayout()
self.button_layout.addLayout(self.buttons_layout, 1, 0)

self.buttons_layout.addWidget(self.find, 1, 0)
self.buttons_layout.addWidget(self.add, 1, 1)
self.buttons_layout.addWidget(self.update, 1, 3)
self.buttons_layout.addWidget(self.delete, 1, 4)
self.buttons_layout.addWidget(self.quit, 1, 5)
self.buttons_layout.addWidget(self.prnt, 2, 0)

def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self, 'Message',
unicode('Вы риальне хотите выйти?', "cp1251"), QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)

if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()

def eventFind(self):
wf = WidgetFind.WidgetFind()
wf.show()
p


def Prnt(self):
print type(List.sp)
a = List.sp[0]
print a.uid


app = QtGui.QApplication(sys.argv)
app.setStyle("Plastique") # Windows, Motif, CDE, Plastique, Cleanlooks
mainwindow = MainWindow()
mainwindow.show()
sys.exit(app.exec_())
Второе окно:

#-*- coding: utf-8 -*-

import sys
import Logic
from DataTypes import Item, List
from PyQt4 import QtGui, QtCore

class WidgetFind(QtGui.QWidget):
def __init__(self, parent = None):
QtGui.QWidget.__init__(self, parent)

self.setGeometry(100,100,250, 200)
self.setWindowTitle(unicode('Поиск документа', "cp1251"))

draftName_title = QtGui.QLabel(unicode('Наименование', "cp1251"))
org_title = QtGui.QLabel(unicode('Код организации', "cp1251"))
classno_title = QtGui.QLabel(unicode('Классификационный\nномер', "cp1251"))
regno_title = QtGui.QLabel(unicode('Порядковый номер', "cp1251"))
projectName_title = QtGui.QLabel(unicode('Наименование\nпроекта', "cp1251"))
created_title = QtGui.QLabel(unicode('Дата', "cp1251"))
comment_title = QtGui.QLabel(unicode('Примечание', "cp1251"))
developer_title = QtGui.QLabel(unicode('Разработчик', "cp1251"))

self.draftName = QtGui.QLineEdit()
self.org = QtGui.QLineEdit()
self.classno = QtGui.QLineEdit()
self.regno = QtGui.QLineEdit()
self.projectName = QtGui.QLineEdit()
self.created = QtGui.QLineEdit()
self.comment = QtGui.QLineEdit()
self.developer = QtGui.QLineEdit()

quit = QtGui.QPushButton(unicode('Закрыть', "cp1251"), self)
quit.setStatusTip(unicode('Закрыть окно',"cp1251"))
self.connect(quit, QtCore.SIGNAL('clicked()'), QtCore.SLOT('close()'))
#QtCore.SLOT('close()'))

ok = QtGui.QPushButton(unicode('Найти', "cp1251"), self)
ok.setStatusTip(unicode('Найти запись в классификаторе', "cp1251"))
self.connect(ok, QtCore.SIGNAL('clicked()'), self.Find)

prnt = QtGui.QPushButton(unicode('Печадь', "cp1251") ,self)
prnt.setShortcut('Ctrl+F')
prnt.setStatusTip(unicode('Поиск в классификаторе', "cp1251"))
self.connect(prnt,QtCore.SIGNAL('clicked()'), self.Prnt)

grid = QtGui.QGridLayout()
grid.setSpacing(8)

grid.addWidget(draftName_title,1,0)
grid.addWidget(self.draftName,1,1,1,1)

grid.addWidget(org_title,2,0)
grid.addWidget(self.org,2,1,1,1)

grid.addWidget(classno_title,3,0)
grid.addWidget(self.classno,3,1,1,1)

grid.addWidget(regno_title,4,0)
grid.addWidget(self.regno,4,1,1,1)

grid.addWidget(projectName_title,5,0)
grid.addWidget(self.projectName,5,1,1,1)

grid.addWidget(created_title,6,0)
grid.addWidget(self.created,6,1,1,1)

grid.addWidget(comment_title,7,0)
grid.addWidget(self.comment,7,1,1,1)

grid.addWidget(developer_title,8,0)
grid.addWidget(self.developer,8,1,1,1)

grid.addWidget(ok,9,0)
grid.addWidget(quit,9,1)
grid.addWidget(prnt,10,1)
self.setLayout(grid)



def Find(self):

logic = Logic.Logic()
fnd = Item()
fnd.draftName = self.draftName.text()
fnd.org = self.org.text()
fnd.classno = self.classno.text()
fnd.regno = self.regno.text()
fnd.projectName = self.projectName.text()
fnd.created = self.created.text()
fnd.comment = self.comment.text()
fnd.developer = self.developer.text()

if len(fnd.draftName) == 0:
fnd.darfName = None

if len(fnd.org) == 0:
fnd.org = None

if len(fnd.classno) == 0:
fnd.classno = None

if len(fnd.regno) == 0:
fnd.regno = None

if len(fnd.projectName) == 0:
fnd.projectName = None

if len(fnd.created) == 0:
fnd.created = None

if len(fnd.comment) == 0:
fnd.comment = None

if len(fnd.developer) == 0:
fnd.developer = None


self.result = logic.ListItems(fnd.org, fnd.classno, fnd.regno, fnd.draftName, fnd.developer, fnd.projectName, fnd.created, fnd.comment)
self.a = self.result[0]
List.sp = self.result
print self.result
print self.a.uid
return self.result


def Prnt(self):
self.connect()



Офлайн

#2 Авг. 4, 2010 22:16:37

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

Пара идиотских вопросов.

проблема один смотри тут
Особенно прочти последний пост!!!!!!



Отредактировано (Авг. 4, 2010 22:18:18)

Офлайн

#3 Авг. 5, 2010 00:51:17

Yarra
От:
Зарегистрирован: 2010-08-04
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Пара идиотских вопросов.

Спасибо большое.

Когда искал почему-то эту тему не увидел. Увидел другую, но из нее не понял что к чему.



Офлайн

#4 Авг. 5, 2010 10:30:02

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

Пара идиотских вопросов.

поехали дальше проблема 2:тутпосмотри в сторону 4 поста!



Отредактировано (Авг. 5, 2010 10:32:12)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version