Форум сайта python.su
Ainurу меня такое было когда файл был не в UTF-8 кодировке, пока работаешь все ок, закрыл-открыл вся кирилица превратилась в нечитаемые символы.
Скрипт запускаю в pycharm и spyder, у них свои глюки. И кириллица превращается в ?
# -*- coding: utf-8 -*- import sys from PyQt4 import QtCore, QtGui from PyQt4.QtSql import * class MyWin(QtGui.QMainWindow): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # РИсуем ГУЙ , чтобы не заморачиваться с UI self.setWindowTitle('--Main Window--') centralWidget = QtGui.QWidget(self) self.setCentralWidget(centralWidget) gridLayout = QtGui.QGridLayout(centralWidget) centralWidget.setLayout(gridLayout) self.lineEdits = [] for i in range(3): self.lineEdits.append(QtGui.QLineEdit(self)) gridLayout.addWidget(self.lineEdits[i], 0, i) self.outputWidget = QtGui.QTextEdit(self) pushBtn = QtGui.QPushButton(self, text='MyFunct') loadBtn = QtGui.QPushButton(self, text='Load data..') checkBtn = QtGui.QPushButton(self, text='check data..') gridLayout.addWidget(self.outputWidget, 1,0,1,3) gridLayout.addWidget(pushBtn, 2, 0) gridLayout.addWidget(loadBtn, 2, 1) gridLayout.addWidget(checkBtn, 2, 2) # ГУЙ нарисован pushBtn.clicked.connect(self.MyFunction) loadBtn.clicked.connect(self.loadData) checkBtn.clicked.connect(self.checkData) self.show() def MyFunction(self): ''' Метод заглушка, напсать что нужно свое ''' self.outputWidget.setText('Нажата кнопка "MyFunct" \n Текст в поле 1: {} \n Текст в поле 2: {} \n Текст в поле 3: {}'.format(self.lineEdits[0].text(), self.lineEdits[1].text(), self.lineEdits[2].text())) def loadData(self): ''' Метод заглушка, напсать что нужно свое ''' self.loadWindow = LoadWindow(self.lineEdits[0].text()) def checkData(self): ''' Метод заглушка, напсать что нужно свое ''' self.checkWindow = CheckWindow(self.lineEdits[1].text(),self.lineEdits[2].text() ) class LoadWindow(QtGui.QWidget): def __init__(self, connParams): super().__init__() self.setWindowTitle('--Load Data Window--') hLayout = QtGui.QHBoxLayout(self) self.outputWidget = QtGui.QTextEdit(self) hLayout.addWidget(self.outputWidget) self.outputWidget.setText('Нажата кнопка "Load data.." \n Параметры соединения с базой:{}'.format(connParams)) self.show() class CheckWindow(QtGui.QWidget): def __init__(self, data1, data2): super().__init__() self.setWindowTitle('--Check Data Window--') hLayout = QtGui.QHBoxLayout(self) self.outputWidget = QtGui.QTextEdit(self) hLayout.addWidget(self.outputWidget) self.outputWidget.setText('Нажата кнопка "Check data.." \n Данные в поле2:{} \n Данные в поле3:{} '.format(data1, data2)) self.show() if __name__=="__main__": app = QtGui.QApplication(sys.argv) myapp = MyWin() myapp.show() sys.exit(app.exec_())
[code python][/code]
Отредактировано PEHDOM (Окт. 27, 2017 14:33:14)
Офлайн
> Spyder мне тоже больше нравился, вот только с pyqt он совсем не хочет дружить…
Пользуйся Wing-ом
> Если бы у меня заработало вряд ли я сидела бы на форуме и просила помощи
Погуглила бы. Про то как создавать диалоги много где пишут.
PEHDOM Диалоги нужно наследовать от QDialog, а не он QWidget, все выджеты должны быть атрибутами ну и дизайнером нужно пользоваться, а не в ручную…
Онлайн
RodegastНу дык я ж для примера, это минимальный код, который человек может скопировать и у себя запустить без танцев с бубном и скачиванием еще трех UI файлов, которые ему нафиг сдались.
Диалоги нужно наследовать от QDialog, а не он QWidget, все выджеты должны быть атрибутами ну и дизайнером нужно пользоваться, а не в ручную…
[code python][/code]
Офлайн
> Ну дык я ж для примера
ИХМО как раз примеры и нужно делать максимально корректными. Иначе ТС увидит что диалоги наследуются от QWidget и решит что именно так и надо делать.
Онлайн
Спасибо,
PEHDOM, сделал виджетами. Все отлично работает
> PEHDOM
Отредактировано Ainur (Ноя. 9, 2017 12:29:54)
Офлайн
> сделал виджетами. Все отлично работает
Если оно у тебя запустилось, то это не значит что все оконные манагеры будут его корректно обрабатывать
Онлайн
RodegastЯ реализовала именно в своем приложении, теперь все работает как надо. а не тупо запустила пример у себя
> сделал виджетами. Все отлично работаетЕсли оно у тебя запустилось, то это не значит что все оконные манагеры будут его корректно обрабатывать
Офлайн
Что значит в твоём понимании “Как надо”?
Онлайн
RodegastПриложение запускается. При нажатии на 1 кнопку открывается дополнительное окно, где отображается результат функции, и оно открывается хоть сколько раз, те могу менять входные параметры и проверять сново. так же со всеми аналогичными кнопками, которые выполняют разные функции. Вы я так понимаю заядлый питонист. А я только новичок. Но это сообщество создано для обмена опытом и помощи новичкам, я так понимаю. Можете помочь мне с другим вопросом?
Что значит в твоём понимании “Как надо”?
def MyFunction3(self): self.ui.textEdit_2.setText("") try: connection = pypyodbc.connect('Driver={SQL Server};Server=*;Database=*; uid=*;pwd=*') cursor = connection.cursor() code2=self.ui.textEdit_4.toPlainText() #ввод параметра с экрана date = (""" declare @pmday_ int = datediff(day,'19900101','%s') exec dbo.spkz_autoretr_finder @lid_net = 623, @lid_ret = 17, @pmday = @pmday_;""" %code2) cursor.execute(date) connection.commit() self.ui.textEdit_2.setText('Successful') except Exception: self.ui.textEdit_2.setText('Error. Please, try again')
Офлайн
> Приложение запускается.
Оно у тебя запускается и работает, но нужно что бы оно запустилось и точно также работало и у других людей.
> Есть такое подозрение что хранимая процедура не успевает до конца отработать и соединение закрывается
Если мне память не изменяет, то в pypyodbc.connect можно передать параметр timeout. Попробуй его поменять.
Онлайн