[Python-es] pyqt4+problema al cerrar una ventana
Pavel Daniel Lopez Castillo
pdlopez en sc.uci.cu
Mar Dic 4 13:54:58 CET 2012
Jean Carlos ahi te pongo el formulario y el dialogo
El problema es cuando le doy a la x que esta en la ventana, pero igual probe poniendo un boton y lo conecte a una funcion cerrar y me da el mismo problema. Con las otras ventanas que tengo no habia tenido ese problema y no necesite utilizar ningun codigo, pienso que el problema sea otra cosa y no de utilizar el codigo que me pones, pero bueno en ese caso donde y como lo uso.
self.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"),self.cerrar)
def cerrar(self):
self.close()
*******************************Formulario*********************************************************************************************************
# -*- coding: utf-8 -*-
# Form implementation generated from reading ui file 'C:\bola\src\forms.ui\antes despues.ui'
#
# Created: Mon Dec 03 01:06:24 2012
# by: PyQt4 UI code generator 4.2
#
# WARNING! All changes made in this file will be lost!
from PyQt4 import QtCore, QtGui
class Ui_Form(object):
def setupUi(self, Form):
Form.setObjectName("Form")
Form.resize(QtCore.QSize(QtCore.QRect(0,0,500,424).size()).expandedTo(Form.minimumSizeHint()))
Form.setMinimumSize(QtCore.QSize(500,424))
Form.setMaximumSize(QtCore.QSize(500,424))
self.gridlayout = QtGui.QGridLayout(Form)
self.gridlayout.setMargin(9)
self.gridlayout.setSpacing(6)
self.gridlayout.setObjectName("gridlayout")
self.tabWidget = QtGui.QTabWidget(Form)
self.tabWidget.setObjectName("tabWidget")
self.tab_3 = QtGui.QWidget()
self.tab_3.setObjectName("tab_3")
self.tableWidget = QtGui.QTableWidget(self.tab_3)
self.tableWidget.setGeometry(QtCore.QRect(7,10,461,311))
self.tableWidget.setObjectName("tableWidget")
self.tabWidget.addTab(self.tab_3,"")
self.tab_4 = QtGui.QWidget()
self.tab_4.setObjectName("tab_4")
self.tableWidget_2 = QtGui.QTableWidget(self.tab_4)
self.tableWidget_2.setGeometry(QtCore.QRect(7,10,461,311))
self.tableWidget_2.setObjectName("tableWidget_2")
self.tabWidget.addTab(self.tab_4,"")
self.gridlayout.addWidget(self.tabWidget,2,0,1,2)
self.label = QtGui.QLabel(Form)
self.label.setObjectName("label")
self.gridlayout.addWidget(self.label,0,0,1,2)
self.lineEdit = QtGui.QLineEdit(Form)
self.lineEdit.setMaxLength(3)
self.lineEdit.setObjectName("lineEdit")
self.gridlayout.addWidget(self.lineEdit,1,0,1,1)
self.pushButton = QtGui.QPushButton(Form)
self.pushButton.setObjectName("pushButton")
self.gridlayout.addWidget(self.pushButton,1,1,1,1)
self.retranslateUi(Form)
self.tabWidget.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(Form)
def retranslateUi(self, Form):
Form.setWindowTitle(QtGui.QApplication.translate("Form", "7 antes-despues", None, QtGui.QApplication.UnicodeUTF8))
self.tableWidget.clear()
self.tableWidget.setColumnCount(0)
self.tableWidget.setRowCount(0)
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), QtGui.QApplication.translate("Form", "Antes", None, QtGui.QApplication.UnicodeUTF8))
self.tableWidget_2.clear()
self.tableWidget_2.setColumnCount(0)
self.tableWidget_2.setRowCount(0)
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_4), QtGui.QApplication.translate("Form", "Despues", None, QtGui.QApplication.UnicodeUTF8))
self.label.setText(QtGui.QApplication.translate("Form", "Centena", None, QtGui.QApplication.UnicodeUTF8))
self.pushButton.setText(QtGui.QApplication.translate("Form", "Buscar", None, QtGui.QApplication.UnicodeUTF8))
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
Form = QtGui.QWidget()
ui = Ui_Form()
ui.setupUi(Form)
Form.show()
sys.exit(app.exec_())
**************************************************************************************************************************************************
*******************************Dialogo************************************************************************************************************
import sys
from PyQt4 import QtCore, QtGui
from forms.antesDespues import Ui_Form
from aplication.conexion2 import Conexion2
from datetime import date, timedelta
class AntesDespues(QtGui.QDialog):
def __init__(self):
QtGui.QDialog.__init__(self)
#Inicializar el formulario
self.ui = Ui_Form()
self.ui.setupUi(self)
self.conn2 = Conexion2()
self.connect(self.ui.pushButton, QtCore.SIGNAL("clicked()"),self.AntesDespues)
def AntesDespues(self):
try:
numero = int(self.ui.lineEdit.text())
except:
QtGui.QMessageBox(" ","solo numeros",QtGui.QMessageBox.Information,1,0,0).exec_()
return
sql = "SELECT fecha, dia_noche FROM centenas WHERE centena='%d'" %(numero)
query2 = self.conn2.cursor.execute(sql)
datos = self.conn2.cursor.fetchall()
filas=1
#Cambio la cantidad de columnas de los TableWidget
self.ui.tableWidget.setColumnCount(9)
self.ui.tableWidget_2.setColumnCount(9)
self.ui.tableWidget.setHorizontalHeaderItem(7, QtGui.QTableWidgetItem("Fecha"))
self.ui.tableWidget.setHorizontalHeaderItem(8, QtGui.QTableWidgetItem("Horario"))
self.ui.tableWidget_2.setHorizontalHeaderItem(7, QtGui.QTableWidgetItem("Fecha"))
self.ui.tableWidget_2.setHorizontalHeaderItem(8, QtGui.QTableWidgetItem("Horario"))
for row in datos:
#Cambio la cantidad de filas de los TableWidget
self.ui.tableWidget.setRowCount(filas)
self.ui.tableWidget_2.setRowCount(filas)
#Convierto a lista el string de la fecha
fecha_list = str(row[0]).split('-')
#Convierto a objetos date cada una de las lista con los datos de las fechas
fecha_obj = date(int(fecha_list[0]), int(fecha_list[1]), int(fecha_list[2]))
#Guardo en f el numero de la fila
f=filas-1
#Codigo para obtener las 5 centenas anteriores y siguientes y mostrarlas en los TableWidget
fecha1 = str(fecha_obj - timedelta(days=1))
fecha2 = str(fecha_obj - timedelta(days=2))
fecha3 = str(fecha_obj - timedelta(days=3))
fecha4 = str(fecha_obj - timedelta(days=4))
fecha5 = str(fecha_obj - timedelta(days=5))
fecha6 = str(fecha_obj - timedelta(days=6))
fecha7 = str(fecha_obj - timedelta(days=7))
fecha8 = str(fecha_obj + timedelta(days=1))
fecha9 = str(fecha_obj + timedelta(days=2))
fecha10 = str(fecha_obj + timedelta(days=3))
fecha11 = str(fecha_obj + timedelta(days=4))
fecha12 = str(fecha_obj + timedelta(days=5))
fecha13 = str(fecha_obj + timedelta(days=6))
fecha14 = str(fecha_obj + timedelta(days=7))
lista_fechas1 = [fecha1, fecha2, fecha3, fecha4, fecha5, fecha6, fecha7]
lista_fechas2 = [fecha8, fecha9, fecha10, fecha11, fecha12, fecha13, fecha14]
for i in xrange(7):
sql = "SELECT centena FROM centenas WHERE fecha='%s' AND dia_noche='%s'" %(lista_fechas1[i],row[1])
query2 = self.conn2.cursor.execute(sql)
centena = self.conn2.cursor.fetchall()
newitem1 = QtGui.QTableWidgetItem(str(centena[0][0]))
self.ui.tableWidget.setItem(f, i, newitem1)
sql = "SELECT centena FROM centenas WHERE fecha='%s' AND dia_noche='%s'" %(lista_fechas2[i],row[1])
query2 = self.conn2.cursor.execute(sql)
centena = self.conn2.cursor.fetchall()
newitem = QtGui.QTableWidgetItem(str(centena[0][0]))
self.ui.tableWidget_2.setItem(f, i, newitem)
self.ui.tableWidget.setColumnWidth(i,40)
self.ui.tableWidget_2.setColumnWidth(i,40)
#Creo los elementos para insertar en los TableWidget
newitem1 = QtGui.QTableWidgetItem(row[0])
newitem2 = QtGui.QTableWidgetItem(row[1])
#Pongo los elementos en el TableWidget
self.ui.tableWidget.setItem(f, 7, newitem1)
self.ui.tableWidget.setItem(f, 8, newitem2)
self.ui.tableWidget_2.setItem(f, 7, newitem1)
self.ui.tableWidget_2.setItem(f, 8, newitem2)
self.ui.tableWidget.setColumnWidth(7,80)
self.ui.tableWidget_2.setColumnWidth(7,80)
self.ui.tableWidget.setColumnWidth(8,45)
self.ui.tableWidget_2.setColumnWidth(8,45)
#Aumento la cantidad de filas
filas+=1
----- Mensaje original -----
De: "Jean Carlos Rodrìguez" <jeancarlosr_ve en yahoo.com>
Para: "La lista de python en castellano" <python-es en python.org>
Enviados: Lunes, 3 de Diciembre 2012 20:12:32
Asunto: Re: [Python-es] pyqt4+problema al cerrar una ventana
def closeEvent(self, event):
reply = QtGui.QMessageBox.question(self, 'SALIR',
_fromUtf8("¿Seguro deseas Salir?"), QtGui.QMessageBox.Yes |
QtGui.QMessageBox.No, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
event.accept()
# sys.exit(1)
else:
event.ignore()
De: Pavel Daniel Lopez Castillo <pdlopez en sc.uci.cu>
Para: python-es en python.org
Enviado: Lunes, 3 de diciembre, 2012 4:52 P.M.
Asunto: [Python-es] pyqt4+problema al cerrar una ventana
Tengo una aplicación hecha con pyqt4.2 en la cual tengo un menú con varias funcionalidades, el problema es que cuando cierro la ventana que se abre al dar click en una de ella me sale un cartel con el siguiente error:
La instruccion en "0x00000000" hace referencia a la memoria en "0x00000000". La memoria no se puede "read".
Hagla clic en Aceptar para finalizar este programa
Hagla clic en CANCELAR para finalizar este programa
Que puede ser la causa de esto, si la funcionalidad me funciona bien
_______________________________________________
Python-es mailing list
Python-es en python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
_______________________________________________
Python-es mailing list
Python-es en python.org
http://mail.python.org/mailman/listinfo/python-es
FAQ: http://python-es-faq.wikidot.com/
Más información sobre la lista de distribución Python-es