Добрый день. Пишу приложение, которое при нажатии на кнопку выводит во втором окне запрос базы. Все работает. Вот только кнопка получается одноразовая, при повторном нажатии уже ничего не работает. Есть еще вторая кнопка которая выдает третье окно уже с результатом другого запроса, тоже работает, но как открылось второе или третье окно первое деактивируется. Как сделать чтобы оно оставалось активным и кнопки постоянно работали? Помогите пожалуйста
# -*- coding: utf-8 -*-
import sys
from PyQt4 import QtCore, QtGui
from PyQt4.QtSql import *
#boremsia s kirillitsoi
reload(sys)
sys.setdefaultencoding('utf-8')
import locale
sys.setdefaultencoding(locale.getpreferredencoding())
import pypyodbc
import xlrd
#importiruiem zagotovlennie formy
from slogi import *
from import_table import *
from check import *
class MyWin(QtGui.QMainWindow):
def __init__(self, parent=None):
super(MyWin, self).__init__()
QtGui.QWidget.__init__(self, parent)
self.ui = Ui_TVMA()
self.ui.setupUi(self)
# sobitia pri najatii na knopki
self.ui.pushButton.clicked.connect(self.MyFunction)
self.ui.btn_load.clicked.connect(self.loadData)
self.ui.btn_check.clicked.connect(self.checkData)
def MyFunction(self):
self.ui.textEdit_2.setText("")
try:
s=self.ui.textEdit.toPlainText() # vvod puti na fail s ekrana
rb = xlrd.open_workbook(s,formatting_info=True)
sheet = rb.sheet_by_index(0)
connection = pypyodbc.connect('Driver={SQL Server};Server=***;Database=***;uid=***;pwd=***')
cursor = connection.cursor()
for rownum in range(1,sheet.nrows): #propuskaem wapku v eksele, 1 stroka
if sheet.row_values(rownum)[0]=='': #propuskaem pustye stroki
pass
else:
#perebiraem kajdyi element spiska
vals=[sheet.row_values(rownum)]
vals1=vals[0][0]
a=vals[0][1]
b=vals[0][2]
c=vals[0][3]
d=vals[0][4]
e=vals[0][5]
f=vals[0][6]
g=vals[0][7]
h=vals[0][8]
i=vals[0][9]
j=vals[0][10]
k=vals[0][11]
l=vals[0][12]
cursor.execute ('insert into dbo.TVMA_IMPORT (Date,PTime,PName,BNo,BTime,BB,BType,SPos,SName,SDur,Snote,SID,VID) values (?,?,?,?,?,?,?,?,?,?,?,?,?)',(vals1,a,b,c,d,e,f,g,h,i,j,k,l)) #vstavliaem v bazu kajdyi element po opredelennomu poliu
connection.commit()
self.ui.textEdit_2.setText('Successful')
except Exception:
self.ui.textEdit_2.setText('Error. Please, try again')
def loadData(self):
connection = pypyodbc.connect('Driver={SQL Server};Server=*;Database=*;uid=*;pwd=*')
cursor = connection.cursor()
code=self.ui.textEdit_3.toPlainText() #vvod daty proverki s ekrana
db_cmd = ("select * from dbo.TVMA_IMPORT where date='%s'" % code)
result = cursor.execute(db_cmd)
self.window = QtGui.QMainWindow() #otkrivaem novoe okno
self.ui = Ui_Other_Window()
self.ui.setupUi(self.window)
myapp.hide()
self.window.show()
self.ui.table_import.setRowCount(0)
for row_number, row_data in enumerate(result):
self.ui.table_import.insertRow(row_number)
for column_number, data in enumerate(row_data):
self.ui.table_import.setItem(row_number, column_number, QtGui.QTableWidgetItem(str(data).decode('cp1251'))) #dlia korrektnogo otobrajenia russkih bukv
connection.close()
def checkData(self):
connection = pypyodbc.connect('Driver={SQL Server};Server=*;Database=*;uid=*;pwd=*')
cursor = connection.cursor()
code=self.ui.textEdit_4.toPlainText() #vvod daty proverki s ekrana
db = ("""
SET NOCOUNT ON; --obhodim problemu s temptable
update dbo.TVMA_IMPORT set Sname = REPLACE(Sname,'/','') from dbo.TVMA_IMPORT
GO
if OBJECT_ID('tempdb..##tmp') is null
create table ##tmp (v1 datetime, v2 datetime, pt_id int, th_id int, stmom int, type int, xx_id int, lg_id int, dur int, note varchar(100))
else truncate table ##tmp
declare @day int,
@save char(1)
set @day = datediff(day,'19900101','%s')
set @save = 'N'; insert ##tmp exec dbo.spkz_tvma_prot_generation @day, @save;""" %code)
dbc=("SELECT TOP (1000) [Date],[PTime],[PName],[BNo],[BTime],[BB],[BType],[SPos],[SName],[SDur] from test")
cursor.execute(db)
cursor.execute("select * from ##tmp where xx_id = -1;")
res=cursor.fetchall()
#result1 = connection.execute(db)
self.window = QtGui.QMainWindow()
self.ui = Ui_CheckWindow()
self.ui.setupUi(self.window)
self.window.show()
myapp.hide()
self.ui.table_check.setRowCount(0)
for row_number, row_data in enumerate(res):
self.ui.table_check.insertRow(row_number)
for column_number, data in enumerate(row_data):
self.ui.table_check.setItem(row_number, column_number, QtGui.QTableWidgetItem(str(data).decode('cp1251')))
connection.commit()
sys.stderr = open("errors.txt", "w+")
if __name__=="__main__":
app = QtGui.QApplication(sys.argv)
myapp = MyWin()
myapp.show()
sys.exit(app.exec_())
input()