Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2016, 19:49   #11
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Я не так выразился в плане не красивый.... Это в плане для меня он не понятен....
kos94ok вне форума Ответить с цитированием
Старый 03.12.2016, 19:53   #12
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию


Идеально сидит)
kos94ok вне форума Ответить с цитированием
Старый 03.12.2016, 20:12   #13
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Я если что, завтра помогу, если что то еще нужно будет. Сейчас уже не могу
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 04.12.2016, 06:40   #14
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Я еще раз скажу что, мой подход это только то как я на данный момент виже решение этой задачи.
И оно не вкоем случае не считется самым верным или еще какием.

Моэтому, у свех у нас разный код. =).

По сообщение, я так понял что тебя устраивает если они идут по 31й штуке в ряд, да ?
Выглядит не плохо !

Ps: То что ты хочешь сам понять код, это только приветствуется, так и нужно.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 04.12.2016, 17:11   #15
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Мои задачи на будущее:
Сделать так что когда я выделяю ячейки то туда встает тот элемент который выбрал.
Потом мне нужно сделать две оси X и Y чтоб они были с низу таблицы с числами ячеек( на подобие графика), но это очень сложно.
Далее сохранить таблицу в файл.
Потом открывать этот файл.
И распечатка этого файла на принтере.
#-----------------------------------------------
Может есть какие идеи что добавить еще?))

Последний раз редактировалось kos94ok; 04.12.2016 в 17:14.
kos94ok вне форума Ответить с цитированием
Старый 04.12.2016, 17:15   #16
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Дак этож уже работает. Или там что то не так ?
Цитата:
Сделать так что когда я выделяю ячейки то туда встает тот элемент который выбрал
На счет оси Х понятно что она снизу, но не могу понять как должна идти снизу ось Y ?
Или все таки ось Y вертикально итед ?
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 04.12.2016, 17:47   #17
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Нет при выделении просто выделяются ячейки.
Да Y вертикально должно быть с права таблици
У Tablewidget есть header но он не подходит так как идет сверху и слева, а мне надо чтобы счет ячеек был с низу справа на лево и с низу вверх
Может конечно Qtablewidget не совсем подходит для создания схем, но это все что у меня есть.

Последний раз редактировалось kos94ok; 04.12.2016 в 17:52.
kos94ok вне форума Ответить с цитированием
Старый 04.12.2016, 18:25   #18
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

В том примере котором я написал выше, можно было один раз нажать на кнопку с иконкой что-бы выбрать ее. И после чего можно сколько угодно раз кликать на яйчейки.

На счет кординат понял. Посмотрю, может смогу найти встроенное решение.
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 04.12.2016, 18:40   #19
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Это верно так все и работает. А если к примеру пользователь захочет заполнить 20 ячеек в ряд одним символом то ему будет не удобно кликать 20 раз подряд, ему удобно будет выделить ячейки что бы туда поместился элемент.

Я на сегодня закончил завтра буду продолжать(почти запилил открытие файла)

Последний раз редактировалось kos94ok; 04.12.2016 в 18:49.
kos94ok вне форума Ответить с цитированием
Старый 04.12.2016, 19:40   #20
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Понял, да, так на саом деле будет не удобнопо 100 раз кликать по кнопкам.

Я ради интереса все на кнопках сделал, вообще убрал таблици. Каждая кнопка имитирует яйчейку.

Можно результат созранитьв файл.

Код:
import sys
from PyQt4.QtGui import QApplication, QHBoxLayout, QLabel, QPixmap
from PyQt4.QtGui import QWidget, QIcon, QPushButton, QTableWidget, QTableWidgetItem
from PyQt4 import QtCore

from functools import partial


class Icons( QWidget ):
    def __init__(self, parent=None):

        # -------------------------------------------------
        QWidget.__init__(self, parent);

        self.W                      = 950;
        self.H                      = 650;

        self.setGeometry(10, 10, self.W, self.H );

        self.setWindowTitle( 'Icon' );
        self.setWindowIcon( QIcon('icon') );

        # -------------------------------------------------
        self.btn_save = QPushButton( 'Save', self );
        self.btn_save.setGeometry( 290, 600, 200, 36 );
        self.btn_save.clicked.connect( self.save_data );

        self.btn_reset = QPushButton( 'Reset', self );
        self.btn_reset.setGeometry( 510, 600, 200, 36 );
        self.btn_reset.clicked.connect( self.create_new_table );

        # -------------------------------------------------
        self.THIS_IMG           = '';
        self.TABLE              = [];
        self.ITEMS_X            = 37; # 20
        self.ITEMS_Y            = 18; # 38
        self.SIZE               = { 'W': 24, 'H': 24}; # 24 / 24

        # -------------------------------------------------
        self.BTNS               = []; #  
        self.IMG                = ''; #  
        # -------------------------------------------------
        self.create_options_btns();


        self.create_new_table();

        # -------------------------------------------------

    # =============================================================
    def create_options_btns( self ):

        # -------------------------------------------------
        btn_w = 30;         # button width  | 30
        btn_h = 30;         # button height | 30
        total_btn_rows = 2; # buttons rows  | 2

        btn_pos_x = 0;
        btn_pos_y = 1;
        ttl_btns  = 62
        all_btns_margin_top = 5;
        all_btns_margin_left = 8;

        for i in xrange(0, ttl_btns):

            bg_image = 'sym'+str(i)+'.png';

            new_button = {
                'img' : bg_image,
                'btn' : QPushButton( QIcon(bg_image), '', self ),
            }

            self.BTNS.append( new_button );

            self.BTNS[ i ]['btn'].clicked.connect( 
                partial(self.select_image, 'sym'+str(i)+'.png') );

            this_btn_margin_left = (btn_w * btn_pos_x) + all_btns_margin_left;
            this_btn_margin_top = (btn_h*btn_pos_y)+all_btns_margin_top;

            self.BTNS[ i ]['btn'].setGeometry( 
                this_btn_margin_left, this_btn_margin_top, btn_w, btn_h );

            self.BTNS[ i ]['btn'].show();
        
            btn_pos_x += 1;

            if btn_pos_x >= (ttl_btns / total_btn_rows):
                btn_pos_x = 0;
                btn_pos_y += 1;

        # -----------------------------------------------------

    # =============================================================
    def create_new_table( self ):

        # -----------------------------------------------------
        sym = 0;
        margin_t = 110;
        margin_l = 20;


        for x in xrange(0, self.ITEMS_X):
            self.TABLE.append( [ 0 for y in xrange(0, self.ITEMS_Y) ] );

        X = self.ITEMS_X-1;

        while X > -1:

            Y = self.ITEMS_Y-1;

            while Y > -1:
                
                new_button = {
                    'btn' : QPushButton( 'B', self ),
                    'ID'  : sym,
                    'img' : '',
                    'X'   : X,
                    'Y'   : Y,
                };


                self.TABLE[ X ][ Y ] = new_button;
                self.TABLE[ X ][ Y ]['btn'].show(); 
                self.TABLE[ X ][ Y ]['btn'].clicked.connect( partial(self.apply_image, X, Y) );

                self.TABLE[ X ][ Y ]['btn'].setGeometry( 
                    (self.SIZE['W']*X) + margin_l, # margin - left
                    (self.SIZE['H']*Y) + margin_t, # height - top
                    self.SIZE['W']-1,                # width
                    self.SIZE['H']-1                 # height
                );


                if X == 0 and Y == self.ITEMS_Y-1:
                    stl = "QPushButton{ background-color: #F00; color: #fff; border-style: none; }";
                elif X == 0:
                    stl = "QPushButton{ background-color: #00F; color: #fff; border-style: none; }";
                elif Y == self.ITEMS_Y-1:
                    stl = "QPushButton{ background-color: #0F0; color: #fff; border-style: none; }";
                else:
                    stl = "QPushButton{ background-color: #777; color: #eee; border-style: none; }";

                self.TABLE[ X ][ Y ]['btn'].setStyleSheet(stl);

                sym += 1;

                Y -= 1;

            X -= 1;
        # -----------------------------------------------------

    # =============================================================
    def select_image( self, img ):

        # -----------------------------------------------------
        self.IMG = img;

        # -----------------------------------------------------

    # =============================================================
    def apply_image( self, X, Y ):

        # -----------------------------------------------------
        stl = "QPushButton{ background-image: url('"+self.IMG+"'); }";
        self.TABLE[ X ][ Y ]['btn'].setStyleSheet(stl);
        self.TABLE[ X ][ Y ]['img'] = self.IMG;

        # -----------------------------------------------------

    # =============================================================
    def save_data( self ):

        # -----------------------------------------------------
        FS = open('data.file', 'w');

        for x in xrange(0, self.ITEMS_X):
            row = '';
            for y in xrange(0, self.ITEMS_Y):
                row += self.TABLE[x][y]['img']+',';

            FS.write( row+"\n" );

        FS.close();

        # -----------------------------------------------------

#################################################################################

app = QApplication(sys.argv)
qb = Icons()
qb.show()
sys.exit(app.exec_())
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 04.12.2016 в 19:42.
pompiduskus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на строки. Даны две строки. Определить можно ли из символов первой строки получить вторую строку.( написать подпрограммой и ANTON1994 Паскаль, Turbo Pascal, PascalABC.NET 5 09.02.2013 14:07
Цик отвечающий за деление строки на две под строки А-р-т-ё-м Помощь студентам 1 13.11.2011 19:40
сравнить две строки. С++ Демик Помощь студентам 12 03.04.2011 21:54
сравнить две строки maxs7 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 01.10.2010 05:27
считать из файла две строки, вывести на экран символы первой строки, которые отсутствуют во второй gotex Помощь студентам 4 08.05.2008 02:27