Найти - Пользователи
Полная версия: QTableView не выводит дату
Начало » GUI » QTableView не выводит дату
1 2 3
Cheryrg
Добрый вечер .
Очень нужна помощь.
class MyTableModel(QtCore.QAbstractTableModel):
    def __init__(self, HeaderS, parent=None):
        super(MyTableModel, self).__init__()
        self.HeaderS = HeaderS
        self.decode_r = decode_r
        
    def rowCount(self, parent):
        return connection.affected_rows() # Возвращает число строк от последнего запроса
    def columnCount(self, parent):
        return 3    
#___________________________________________________  
    def data(self, index, role):
        if not index.isValid():
            return QVariant()
        elif role != Qt.DisplayRole:
            return QVariant()
        return self.decode_r[index.row()][index.column()]


self.decode_r заполняем из таблицы MYSQL.
QTableView отображает все кроме дат. Я так понял проблема в том что запрос из БД возвращает datetime.date( ). Как можно решить эту проблему. Уже третий день сижу над этим.
Cheryrg
Ладно, диплом у меня через 5 дней, пока выкрутился таким способом:
        SQL ="SELECT DATE_FORMAT( DATA_OUV,'%Y-%m-%d'), DATE_FORMAT(DATA_OINV,'%Y-%m-%d'),VALLDAY FROM vTABLE"
terabayt
давайте весь код и бд, посмотрим
Rodegast
> Я так понял проблема в том что запрос из БД возвращает datetime.date( ). Как можно решить эту проблему.

Преобразуй её в строку и выводи.
Cheryrg
Спасибо, заработало.

Теперь другая проблема.
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 0-1: ordinal not in range(128)

class LoginWindow(QtGui.QDialog):
    def __init__(self):
        super(LoginWindow, self).__init__()
        self.setWindowTitle(u'Вход')
        self.setWindowIcon(QtGui.QIcon('123.ico'))
        
        self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint |
                            QtCore.Qt.WindowSystemMenuHint |
                            QtCore.Qt.MSWindowsFixedSizeDialogHint)
        #Поля ввода
        self.LineEditNameL = QtGui.QLineEdit(self)
        self.LineEditNameL.setFocus()   #Фокус на self.LineEditNameL
        self.LineEditPassL = QtGui.QLineEdit(self)
        self.LineEditPassL.setEchoMode(2) # Отображение пароля звездочками    
        #Кнопки
        self.ButLoginL = QtGui.QPushButton(u'Войти', self)
        self.ButCancelL = QtGui.QPushButton(u'Отмена', self)
        #Форма
        self.HboxL = QtGui.QHBoxLayout()
        self.HboxL.addWidget(self.ButLoginL)
        self.HboxL.addWidget(self.ButCancelL)
        #Форма      
        self.FormL = QtGui.QFormLayout()
        self.FormL.addRow(u"Логин:", self.LineEditNameL)
        self.FormL.addRow(u"Пароль:", self.LineEditPassL)
        self.FormL.addRow(self.HboxL)
        self.setLayout(self.FormL)    
        #Сигналы
        self.ButLoginL.clicked.connect(self.on_Login)
        self.ButCancelL.clicked.connect(self.close)
    def on_Login(self):
        global connection
        global cursor
        BDUSER = str(self.LineEditNameL. text())
        BDPASSWORD = str(self.LineEditPassL. text())
        try:
            connection = MySQLdb.connect(host="127.0.0.1",user=BDUSER,passwd=BDPASSWORD, db = "db", charset='utf8')
            cursor = connection.cursor()        
        except MySQLdb.DatabaseError, x:
            x = str(x)           
            reply = QtGui.QMessageBox.critical(self, u'Ошибка!!',x)                          
        else:
            self.hide()
            self.window = MainWindow()
            self.window.show()
            

Пробовал
BDUSER = str(self.LineEditNameL. text().encode('utf-8')))
'QString' object has no attribute ‘encode’
Пробовал
BDUSER = unicode(self.LineEditNameL. text())
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 0-1: ordinal not in range(128)

Все работает но с этим проблема. А в четверг диплом(((
Cheryrg
Сори если туплю, не сплю 3тие сутки.
Нашел такой выход.
        BDUSER = str(self.LineEditNameL. text().toUtf8())
        BDUSE = BDUSER.decode("utf-8")
        print BDUSE

Если есть элегантнее, сообщите плз. Всем хорошей недели
terabayt
а вы после сдачи диплома кем будете?
профессиональным задавальщиком вопросов?
Cheryrg
не сплю 3тие сутки
на 3 сутки начинаются галлюцинации
Cheryrg
Если есть элегантнее
смотря на ваш класс LoginWindow я не думаю что эти строки как-то испортят всю “красоту”
Cheryrg
terabayt
а вы после сдачи диплома кем будете?профессиональным задавальщиком вопросов?

Я Вас чем то обидел? Или это врожденная надменность? Я взялся за питон и вообще за эту тему, только потому что ничего в нем не знал и хотел научится. Если у меня есть какие то глупые ошибки, можно мне на них указать. Тем более я не просто спрашиваю и жду готового решения, а пытаюсь найти его сам.
terabayt
Cheryrg
Тем более я не просто спрашиваю и жду готового решения, а пытаюсь найти его сам.
это хорошо. вы молодец, я вижу что вы работаете
но я так подразумеваю что после сдачи диплома вы будете идти работать программистом?
Cheryrg
Я Вас чем то обидел?
нет, прост нам прислали пару стажеров, так сказать на новый год
а они такое пишут… вот всю ночь сидел и писал что и где у них не так, осталось 10 дней до конца и не думаю что кто-то сделает таск
вот вы и попали под горячую руку
Cheryrg

terabayt
это хорошо. вы молодец, я вижу что вы работаете
но я так подразумеваю что после сдачи диплома вы будете идти работать программистом?
К сожалению много упущено что бы стать программистом. У меня есть профессия, этот проект - это лишь попытка доказать себе что могу сделать диплом сам, не получая готовый от руководителя или покупая. Ну и мало ли куда жизнь задвинет, лишним не будет. Изначально мне его дали готовый и на Делфи.


Все же не могу понять что ужасного в LoginWindow. Многое сделал по учебнику Прохоренок Н.А. - Python 3 и PyQt.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB