Найти - Пользователи
Полная версия: обновление ячеек QtableWidget с помощью ChangeItem.
Начало » Python для новичков » обновление ячеек QtableWidget с помощью ChangeItem.
1 2 3 4 5
py.user.next
LuckyTruck
Мне было 16 и я писал для оборонки.
Да ты просто шут гороховый

LuckyTruck
Я писал программы покруче этой. Просто машины были другими. А изучить новый язык для человека с головой - не проблема. После Алгола на Cobol у меня ушла неделя. Мне было 16 и я писал для оборонки.
Сейчас мне 60 и я не писал более 30 лет.
Программист никогда не откажется от программирования, запомни себе это на носу!
Что Алгол, что Cobol, что Fortran, - это всё устаревшая хрень. Само программирование ушло вперёд. Не просто языки какие-то там появились, а сами языки стали другими. Ты нифига не можешь питон понять, потому что он вообще по-другому устроен, в нём другие парадигмы заложены.
Что ты знаешь про полиморфизм?

LuckyTruck
Он работает и приносит неможко денежек к пенсии. (которой меня лишили на два года)
Я тебя пенсии не лишал, запомни это. И твою жизнь не ухудшал и на тебе не ездил. Так что иди высказывай тем, кто твою пенсию забрал себе.

LuckyTruck
Я продал одну программу учёта на Аксеесс в 90 году за сто долларов!! Она пять лет пахала. Я наладил работу в нескольких маленьких компаниях.
Да, большую часть своего времени я не был связан с программированием. Я руководил снабжением более чем 100 градообразующих предприятий России. (по своему направлению).
А в питоне ты не можешь ничего, так тебе ясно? Потому что это не двухнедельная фигня. Им серьёзно нужно заниматься, чтобы что-то уметь, надо постоянно тренироваться и писать десятки ненужных кодов и выкидывать их. Это как художественное искусство - нужно много дерьмовых картин нарисовать и выкинуть, чтобы просто какие-то отдельные элементы отточить.
FishHook
LuckyTruck
Но точно Си язык персоналок.
Ты бы хоть википедию почитал перед тем как ерунду говорить.

LuckyTruck
А пишу хорошо.
ИМХО, нет. Это графомания и бессмысленная жвачка, слова ради слов.

LuckyTruck
Таких придурков, как сейчас было мало.
Ну так!

Короче, Шекспир, тема перешла в обсуждение не связанных с профилем форума глупостей. Где ваша программа то? Что мы обсуждаем?
LuckyTruck
обновление ячеек QtableWidget с помощью ChangeItem.
LuckyTruck
QTableVidget не имеет сигнала CHANGEITEM и CellChange тоже.
Я перехватил нажатие ENTER? но оно работает криво.
Пока копаю Абстракт модель. Но для трёх пользователей и бызы измеряющейся сотнями (!!!) записей не вижу смысла в MVC/
Хотел сделать простой АРМ кассира, записывающий строки чеков, чеки. И ещё кое-что по мелочи.
MVC на сайте хорошо работает. А здесь мини мини…
В QTablrVidget просто рисовать оформление.
Споткнулся на UPDATE текущей записи. Апдейтить всё мне показалось неприличным.
LuckyTruck
FishHook
Это графомания и бессмысленная жвачка
Вы противоречите 4 000 пользователей, которым понравилось. Не страшно? Или дуракам бояться нечего, они просто не понимают опасности?
Или вы круче всех?
У меня на такой случай есть хрен с винтом.
FishHook
LuckyTruck
Дайте код программы, которая вызывает у вас вопросы. Которую я смогу запустить в своем дебаггере.
В чем проблема? Это необходимое условие для продолжения беседы по существу.
LuckyTruck
py.user.next
Программист никогда не откажется от программирования, запомни себе это на носу!
Что ты знаешь про афган?
ПРО чЕЧНЮ?
py.user.next
А в питоне ты не можешь ничего, так тебе ясно?
Гы-ы-ы-ы…
Это пока.
Ты тоже родился не с умением писать фийню.
И в штанишки какал как я, и писал тоже.
Правда вони от тебя больше.
FishHook
LuckyTruck
Вы противоречите 4 000 пользователей, которым понравилось. Не страшно?
Ну, в этом плане вам еще работать и работать! У педика Бори Моисеева милионы поклонников, а у Джастина Бибера миллиарды лайков на ютубе. Да вам далеко даже до чувака, который себе в задницу трехлитровую банку засунул, хотя у него всего-то сотня-другая тысяч почитателей. Впрочем, догнать по рейтингу перфомансы Павленского у вас шансы есть.
LuckyTruck
FishHook
Дайте код программы,

Форма создана в QTDisigner название qtable
На форме кнопка pushButton и QTableWidget под именем tableWidget_2

База SQLite str_chek.db
В ней таблица str_chek
Со столбцами id, cheknum, description, quant, cost, total
Код

 from PyQt5.QtWidgets import QTableWidgetItem
from PyQt5.QtWidgets import QWidget, QApplication
from PyQt5.QtCore import Qt
from qtable import *
import sys
from PyQt5.QtSql import (QSqlDatabase, QSqlQuery) #and so on.
import sqlite3
data = []
class mywindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)
        self.view1()
       
        # очистка таблицы при клике на кнопку.
        self.ui.pushButton.clicked.connect(self.view1)
        nn = 1
        self.edit_row()
    def view1(self): #очистка и перезапись таблицы
        self.clear()
        self.conn = sqlite3.connect('str_chek.db')
        self.c1 = self.conn.cursor()
        self.c1.execute('''SELECT MAX(cheknum) 
                    FROM str_chek''')
        self.conn.commit()
        nn = self.c1.fetchone()
                #print(nn)
        nn = str(nn)
        nn = nn.replace(',', '')
        #print(nn)
        nn = nn.replace('(', ' ')
        #print(nn)
        nn = nn.replace(')', ' ')
        #print(nn)
        nn = str(nn)
        self.conn = sqlite3.connect('str_chek.db')
        self.c = self.conn.cursor()
        self.c.execute("SELECT * FROM str_chek WHERE cheknum = '%s' ORDER BY id DESC" % nn)
        rows = self.c.fetchall()
        for row in rows:
            inx = rows.index(row)
            self.ui.tableWidget_2.insertRow(inx)
            # add more if there is more columns in the database.
            self.ui.tableWidget_2.setItem(inx, 0, QTableWidgetItem(str(row[0])))
            self.ui.tableWidget_2.setItem(inx, 1, QTableWidgetItem(str(row[1])))
            self.ui.tableWidget_2.setItem(inx, 2, QTableWidgetItem(str(row[2])))
            self.ui.tableWidget_2.setItem(inx, 3, QTableWidgetItem(str(row[3])))
            self.ui.tableWidget_2.setItem(inx, 4, QTableWidgetItem(str(row[4])))
            self.ui.tableWidget_2.setItem(inx, 5, QTableWidgetItem(str(row[5])))
        
#self.ui.tableWidget_2.itemChanged(QTableWidgetItem *item) [edit_row()]
# эту строку пока не смог прикрутить...
    def keyPressEvent(self, e):
        if e.key() == Qt.Key_Return:
            self.edit_row()
    def clear(self):
        self.ui.tableWidget_2.setRowCount(0)
    def clear_row(self):
        self.ui.tableWidget_2.setRowCount(0)
    def edit_row(self):
        row1 = self.ui.tableWidget_2.currentRow()
        col = self.ui.tableWidget_2.currentColumn()
        r = float(row1)
        if r < 0:
            #print("List is empty")
            return
        else:
            id1 = self.ui.tableWidget_2.item(row1, 0)
            id1 = id1.text()
            cheknum = self.ui.tableWidget_2.item(row1, 1)
            cheknum = cheknum.text()
            description = self.ui.tableWidget_2.item(row1,2)
            description = description.text()
            quant = self.ui.tableWidget_2.item(row1, 3)
            quant = quant.text()
            cost = self.ui.tableWidget_2.item(row1, 4)
            cost = cost.text()
            total = self.ui.tableWidget_2.item(row1, 5)
            total = total.text()
            str1 = 'UPDATE str_chek SET cheknum='
            str2 = str(cheknum)
            str5 = ', quant='
            str6 = str(quant)
            str3 = ' WHERE id ='
            str4 = str(id1)
            #str5 = '"'
            str0 = str1 + str2 +str5 + str6 + str3 + str4
            print(str0)
            self.c.execute('''{}'''.format(str0))
            print(str0)
            self.conn.commit()
            print(cheknum)
            print(description)
            print(quant)
            print(cost)
            print(total)
    def row_column_clicked(self,row, col, value):
        row = self.tableWidget.currentRow()
        col = self.tableWidget.currentColumn()
        value = self.tableWidget.item(row, col)
app = QtWidgets.QApplication([])
win = mywindow()
win.show()
sys.exit(app.exec())

Print вставлены для просмотра значений.
Всё работает, но нажимать ENTER приходится дважды, по концу ввода в ячеку и по отработке сигнала KEYPress/
Хотелось бы обновлять текущую запись и сохранять значение в базе автоматом, по сигналу?? или иначе.
Не знаю, понятно ли..
Если нет времени, ок.
Я справлюсь.
И не такое разруливали.
LuckyTruck
Фишхук, выдыхай!!!
Лопнешь!!!!
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