Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
 
SKY_SHY
2 / 2 / 1
Регистрация: 15.10.2015
Сообщений: 173
1

Создание редактируемых таблиц или редактируемых полей

28.01.2017, 16:55. Просмотров 404. Ответов 4

Здравствуйте! С помощью каких инструментов можно создавать редактируемые таблицы как в jquery? pyquery у меня успешно не установилась на Anaconda -
Package not found error: Package not found: Package missing in current win-64 channels.

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
def redit_word_in_chunk(a_part):
    CHUNK=[]
    chunk=a_part
    print (chunk)
    for line in chunk:
        print (line)
        print ("1 ---- Y")
        print ("2 ---- N")
        des0=int(input("Will you ever change your word:"))
        if des0==1:
            line = input("Enter a new value:")
        else:
            line = line
        CHUNK.append(line)
    return CHUNK
 
def edit_stream():
    lol = lambda lst, sz: [lst[i:i+sz] for i in range(0, len(lst), sz)]
    PART_FOR_ENABLE=[]
    Part_fin=[]
    N_times = int(input("Enter number of chuncks:"))
    for namestream, dataitem in zip(Labels, WORDS):
        filestream = '{}:{}'.format(filename, namestream)
        with open(filestream, 'r+', encoding='utf8') as stream:      
            sc = stream.readlines()
            parts = int(len(sc)/N_times)
            Part_for_enable = lol(sc, parts)
            PART_FOR_ENABLE.append(Part_for_enable)
    for lang in range(len(PART_FOR_ENABLE)):
        for chunk in range(len(PART_FOR_ENABLE[lang])):
            new_chunk = redit_word_in_chunk(PART_FOR_ENABLE[lang][0])
            PART_FOR_ENABLE[lang].append(new_chunk)
            PART_FOR_ENABLE[lang].pop(0)
    for lang in len(PART_FOR_ENABLE):
        for chunk in range(len(lang)):
            Part_fin.append(PART_FOR_ENABLE[lang][chunk])
    for namestream, dataitem in zip(Labels, Part_fin):
        filestream = '{}:{}'.format(filename, namestream)
        print (filestream, dataitem)
        with open(filestream, mode='w', encoding='utf8') as stream:
            stream.write(stream_content(dataitem))

Есть массив слов для редактирования. Он разделен на потоки по языкам. Каждый язык при это делится еще на подмассивы
Объект итерации - это и есть подмассив. В каждой итерации используется функция redit_word_in_chunk для редактирования слова.

Я хотел бы поля таблицы связать для каждого значения в цикле в python.

С помощью какой приспособы к python это можно сделать - django, pyquery, или еще с помощью какой-нибудь ерундушки?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.01.2017, 16:55
Ответы с готовыми решениями:

Динамическое создание полей в PyQt5
Всем привет. Ситуация такая. Генерирую UI файл в QtDesigner, подгружаю его в...

Обработка редактируемых полей ввода (Edit)
Есть ли функции для пропуска определенных значений в поле Edit? Т.е нужно...

Добавление редактируемых блоков
Помогите пожалуйста разобраться, почему когда я создаю блок его можно...

Сохранение редактируемых записей в БД
У меня возникла такая проблема, Есть ComboBox в который выгружается из БД 1...

Не нахожу ответственного списка редактируемых страниц
http://images.vfl.ru/ii/1456945230/2af47730/11708880.png Добрый день,...

4
alex925
2673 / 2280 / 630
Регистрация: 19.03.2012
Сообщений: 8,830
29.01.2017, 12:52 2
Цитата Сообщение от SKY_SHY Посмотреть сообщение
Я хотел бы поля таблицы связать для каждого значения в цикле в python.
Ты хочешь полноценный динамический сайт или ты хочешь сгенерить статитическую html страницу?
1
SKY_SHY
2 / 2 / 1
Регистрация: 15.10.2015
Сообщений: 173
29.01.2017, 14:45  [ТС] 3
Да нет, мне всего лишь нужно чтобы эти поля обновлялись на каждой итерации в цикле.

1.) Я запускаю функцию edit_stream().

2) Там происходит итерации - т.е. в каждой запускается функция redit_word_in_chunk.
Тут все происходит через обычный ввод -
Python
1
input
. - не смотрите - это сильно громоздко. Опыт вообще 0 с PyQt.

А вообще есть двумерный массив, который используется в качестве контента для потоков файла NTFS.
WORDS = [['rain', 'cat', 'dog'], ['дождь', 'кошка', 'собака'], ['eső', 'macska', 'kutya']]
Даны 3 подсписка , каждый из которых соответствует своему языку EN, RU, HU - они могут содержать хоть 200 слов, но не буду же я их в виджите сразу столько отображать, поэтому я хотел бы отобразить штук 10 из каждого языка - т.е. я уже заранее разделил каждый подсписок на столько (10) значений.

Я бы хотел 10 значений из подсписков, которые эта функция принимает передать в редактируемые поля в виджите - если конечно так можно, потом еще 10, потом еще и еще пока список не закончится.
0
alex925
2673 / 2280 / 630
Регистрация: 19.03.2012
Сообщений: 8,830
29.01.2017, 18:22 4
Цитата Сообщение от SKY_SHY Посмотреть сообщение
С помощью какой приспособы к python это можно сделать - django, pyquery, или еще с помощью какой-нибудь ерундушки?
Цитата Сообщение от SKY_SHY Посмотреть сообщение
е смотрите - это сильно громоздко. Опыт вообще 0 с PyQt.
Погоди погоди, ты что хочешь сделать в итоге? Тебе нужна html страница с данными из массива, сайт, который будет уметь обновлять данные если массив изменился или тебе нужно гуевое приложение? Ты определись сам сначала.

Если нужно просто сгенерить html с данными из массива, то jinja2, если мини сайтик, то flask + jinja2, если pyqt, то QTableView и т д
1
SKY_SHY
2 / 2 / 1
Регистрация: 15.10.2015
Сообщений: 173
30.01.2017, 23:16  [ТС] 5
Порошок вас не ругать меня заранее.

Почему-то не добавляются значения. Вот примерчик как образец (https://riverbankcomputing.com/pipermail/pyqt/2008-March/018705.html)


Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import sys
from PyQt5.QtWidgets import QMainWindow, QApplication, QWidget, QPushButton, QAction, QTableWidget, QTableWidgetItem, QMessageBox, QTabWidget, QVBoxLayout
from PyQt5.QtCore import pyqtSlot
 
 
class NewWidget(QTableWidget):
    
    def __init__(self, parent=None, *args,  **kwds):
        super().__init__(parent)
        self.library_vals = kwds['new']
        self.initUI(self.library_vals)
    def initUI(self, vals):
        self.setGeometry(600,300,600,600)
        self.setWindowTitle('Vocabulary')
        self.createTable(self.library_vals)
    
        self.show()
        
        
    def createTable(self, parent):
 
        mainHeaders = []
        n = enumerate(parent)
        
        num_rows = len(parent[0][1])
        self.tableWidget = QTableWidget()
        self.tableWidget.setRowCount(num_rows)
        self.tableWidget.setColumnCount(len(parent))
        self.tableWidget.setHorizontalHeaderLabels(mainHeaders)
 
        for k , key in n:
            mainHeaders.append(key[0])
            for m, item in enumerate(key):
                newitem = QTableWidgetItem(str(item))
                self.tableWidget.setItem(m, k,newitem)
 
        #Adj size of table
        self.tableWidget.doubleClicked.connect(self.on_click)
        self.tableWidget.layout = QVBoxLayout(self)
        self.pushButton = QPushButton("Apply")
        self.tableWidget.layout.addWidget(self.pushButton)
        self.tableWidget.resizeColumnsToContents()
        self.tableWidget.resizeRowToContents(len(mainHeaders))
        
    def on_click(self):
        
        print ("\n")
        for currentQTableWidgetItem in self.tableWidget.selectedItems():
            print (currentQTableWidgetItem.row(), currentQTableWidgetItem.column(), currentQTableWidgetItem.text())
        
                
data ={'EN':['cat', 'dog', 'rain'], 'RU':['кошка', 'собака', 'дождь'], 'HU':['macska', 'kutya', 'esЕ‘']}  
data1 = [(v, k) for v, k in data.items()]
 
 
def main():
    app  = QApplication(sys.argv)
    w=NewWidget(new=data1)
    app.exec_()
    
 
    
if __name__ == '__main__':
    main()
Пока не пофиксил, почему таблица не заполняется - может у вас идеи. А если прдположить что data обновляется в каждой итерации в цикле, тогда у меня будет столько окон сколько итераций?
0
30.01.2017, 23:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.01.2017, 23:16

Выделение новых и редактируемых строк в DbGrid
Как выделить добавленную строку в DBGRID одним цветом, а отредактированную -...

Автоматическое формирование цены на основе редактируемых коэффициентов
Доброе время суток уважаемые. пробую написать небольшой каталог товаров. И...

Как разместить несколько редактируемых окон на одной форме?
Нужно разместить несколько редактируемых записей на одном окне, чтобы можно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru