Форум программистов
Реклама:
Гарантия безопасности сети с UTM-системой ИКС.
Защита ПД, межсетевой экран, контроль доступа, фильтрация трафика, система предотвращения вторжений.
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

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


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

icq: 446.452.423
По умолчанию

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

icq: 446.452.423
По умолчанию

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

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

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

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

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

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

icq: 446.452.423
По умолчанию

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

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

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

icq: 446.452.423
По умолчанию

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

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

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

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

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

icq: 446.452.423
По умолчанию

Понял, да, так на саом деле будет не удобнопо 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_())

__________________
<Дзен - Вся вселенная в тебе > | <Рай - это всего лишь мечта терпящего страдания ада> | github.com/ch3ll0v3k

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

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




18:47.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


как улучшить посещаемость, а также решения по монетизации сайтов, видео и приложений

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru