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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.10.2016, 22:43   #1
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию Нужна помощь

Здравствуйте меня зовут Константин я только пока познаю программирование.
Пишу программу для вязания.
Столкнулся с проблемой.
Имеется базовое окно, в котором label принимает значение, потом значение
присваивается переменной.
Потом переменная присваивается переменной находящейся в модуле1, а далее в модуле2 создается таблица с этими значениями.
У меня почему то таблица принимает максимальный свой размер.
Точно передать значение методу не получается.
Вот кусок кода функция с присвоением
Код:
def on_clicked_btn(self):
        x = self.label_1.text()
        y = self.label_2.text()
        mod.x = (int(self.x()))
        mod.y = (int(self.y()))
        self.form = test2.TableWindow()
        self.form.show()
        print(x, y)
Далее модуль1 который принимает данные

Код:
x = 0; y = 0

if __name__ == '__main__':
    print("module")
Ну и модуль который должен принять

Код:
table = QtGui.QTableWidget(self)
                table.setRowCount(mod.x)
                table.setColumnCount(mod.y)
Я самоучка сильно не бейте и слабо тоже)
Что я делаю не так? Если надо весь код скину.

Последний раз редактировалось kos94ok; 29.10.2016 в 00:29.
kos94ok вне форума Ответить с цитированием
Старый 29.10.2016, 11:47   #2
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Давай весь код. Есть ге раскрытые моменты. Как ты создаешь экеземпляр класса ?
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Старый 29.10.2016, 13:36   #3
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Главное окно программы
Код:
import sys
import mod
import test2
from PyQt4 import QtGui
from PyQt4 import QtCore

#Окно

class Window(QtGui.QMainWindow):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)

self.setToolTip('Выберите <b>Размер</b> схемы')
self.setWindowTitle('LeraVyajet 1.0')
self.statusBar().showMessage(' ') #статус бар
self.setWindowIcon(QtGui.QIcon('iko.png'))
self.resize(640, 450)
self.center()
# Фон окна
pixmap = QtGui.QPixmap("fon.png")
pal = self.palette()
pal.setBrush(QtGui.QPalette.Normal, QtGui.QPalette.Window,
QtGui.QBrush(pixmap))
pal.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window,
QtGui.QBrush(pixmap))
self.setPalette(pal)
self.setMask(pixmap.mask())
# Лэйблы
self.label_1 = QtGui.QLineEdit(self)
self.label_1.move(110, 1)
label = QtGui.QLabel('Количество рядов', self)
label.move(5, 0)
self.label_2 = QtGui.QLineEdit(self)
self.label_2.move(110, 40)
label = QtGui.QLabel('Количество петель', self)
label.move(5, 40)
#Валидатор, только цифры
objValidator = QtGui.QDoubleValidator(self)
objValidator.setRange(0, 100)
self.label_1.setValidator(objValidator)
self.label_2.setValidator(objValidator)
# Кнопка
self.btn = QtGui.QPushButton("Создать", self)
self.btn.setGeometry(75, 100, 80, 30)
self.connect(self.btn, QtCore.SIGNAL("clicked()"), self.on_clicked_btn)

# Запуск обработчика

def on_clicked_btn(self):
x = self.label_1.text()
y = self.label_2.text()
mod.x = (int(self.x()))
mod.y = (int(self.y()))
self.form = test2.TableWindow()
self.form.show()
print(x, y)

# выравнивание по центру экрана
def center(self):
screen = QtGui.QDesktopWidget().screenGeometry()
size = self.geometry()
self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2)

#запрос выхода
def closeEvent(self, event):
reply =QtGui.QMessageBox.question(self, ' ', "Вы хотите выйти?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No)
if reply == QtGui.QMessageBox.Yes:
event.accept()
else:
event.ignore()

#Старт программы
def run():
app = QtGui.QApplication(sys.argv)
window = Window()
window.show()
sys.exit(app.exec_())

run()
kos94ok вне форума Ответить с цитированием
Старый 29.10.2016, 13:38   #4
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Модуль принимает значение
Код:
from PyQt4 import QtGui

x = 0; y = 0

if __name__ == '__main__':
print("module")
kos94ok вне форума Ответить с цитированием
Старый 29.10.2016, 13:44   #5
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Окно с таблицей
Код:
import sys
import mod

from PyQt4 import QtGui
from PyQt4 import QtCore

class TableWindow(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setWindowTitle('Схема для вязания')
self.resize(800, 600)
self.setWindowIcon(QtGui.QIcon('iko.png'))
self.center()

grid = QtGui.QGridLayout()
self.setLayout(grid)
data = {'test':['1','2','3','3'],
'test2':['4','5','6','2'],
'test3':['7','8','9','5'],
'test4':['4','3','4','8'],}
table = QtGui.QTableWidget(self)
table.setRowCount(mod.x)
table.setColumnCount(mod.y)
horHeaders = []
for n, key in enumerate(sorted(data.keys())):
horHeaders.append(key)
for m, item in enumerate(data[key]):
newitem = QtGui.QTableWidgetItem(item)
table.setItem(m, n, newitem)
table.setHorizontalHeaderLabels(horHeaders)
table.resizeColumnsToContents()
table.resizeRowsToContents()
grid.addWidget(table, 0, 0)
self.show()
kos94ok вне форума Ответить с цитированием
Старый 29.10.2016, 13:45   #6
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

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

Это и есть код и "import mod" ?

Код:
from PyQt4 import QtGui

x = 0; y = 0

if __name__ == '__main__':
    print("module")
Вообще не монятно что это такое. Кусок кода который выводит слово "mudule" к терминал.

Какой смысл в этом куске кода ?


Можешь, написать в каком файле, какой код ?
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

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

Все я наконец-то въезал в то что ты хотел выполнить =))

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


// main.py
Код:
# -*- coding: utf-8 -*-

import sys
from table_window import TableWindow
from PyQt4 import QtGui
from PyQt4 import QtCore

#Окно
class Window( QtGui.QMainWindow ):
    
    def __init__(self, parent=None):

        QtGui.QWidget.__init__(self, parent);
        self.setToolTip('select cxema size'); # Выберите <b>Размер</b> схемы
        self.setWindowTitle('LeraVyajet 1.0');
        self.statusBar().showMessage(' ') #статус бар
        self.setWindowIcon(QtGui.QIcon('iko.png'));
        self.resize(640, 450);
        self.center();
        self.setStyleSheet('QMainWindow { background: #999; padding: 20px; }');
        
        # Фон окна
        pixmap = QtGui.QPixmap("fon.png");
        pal = self.palette();
        pal.setBrush(QtGui.QPalette.Normal, QtGui.QPalette.Window, QtGui.QBrush(pixmap));
        pal.setBrush(QtGui.QPalette.Inactive, QtGui.QPalette.Window,QtGui.QBrush(pixmap));
        self.setPalette(pal);
        self.setMask(pixmap.mask());

        # Лэйблы
        self.label_1 = QtGui.QLineEdit(self);
        self.label_1.move(110, 1);
        label = QtGui.QLabel('Rows count', self); #Количество рядов
        label.move(5, 0);
        self.label_2 = QtGui.QLineEdit(self);
        self.label_2.move(110, 40);
        label = QtGui.QLabel('Loops count', self); # Количество петель
        label.move(5, 40);

        #Валидатор, только цифры
        objValidator = QtGui.QDoubleValidator(self);
        objValidator.setRange(0, 100);
        self.label_1.setValidator(objValidator);
        self.label_2.setValidator(objValidator);

        # Кнопка
        self.btn = QtGui.QPushButton("Create", self); # Создать
        self.btn.setGeometry(75, 100, 80, 30);
        self.connect(self.btn, QtCore.SIGNAL("clicked()"), self.on_clicked_btn);

    # Запуск обработчика
    def on_clicked_btn(self):
        x = self.label_1.text();
        y = self.label_2.text();
        
        self.form = TableWindow( int(x), int(y) );
        self.form.show();


    # выравнивание по центру экрана
    def center(self):
        screen = QtGui.QDesktopWidget().screenGeometry();
        size = self.geometry();
        self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2);

    #запрос выхода
    def closeEvent(self, event): # Вы хотите выйти?
        reply =QtGui.QMessageBox.question(self, ' ', "Exit ?", QtGui.QMessageBox.Yes, QtGui.QMessageBox.No);

        if reply == QtGui.QMessageBox.Yes:
            event.accept();
        else:
            event.ignore();

if __name__ == '__main__':

    app = QtGui.QApplication(sys.argv);
    window = Window();
    window.show();
    sys.exit(app.exec_());

// table_window.py

Код:
# -*- coding: utf-8 -*-

import sys

from PyQt4 import QtGui
from PyQt4 import QtCore

class TableWindow(QtGui.QWidget):
    def __init__(self, _X_, _Y_, parent=None):
        QtGui.QWidget.__init__(self, parent);
        self.setWindowTitle('sxema'); # 'Схема для вязания'
        self.resize(800, 600);
        self.setWindowIcon(QtGui.QIcon('iko.png'));
        self.center();
        grid = QtGui.QGridLayout();
        self.setLayout(grid);

        self.Y = _Y_;
        self.X = _X_;

        data = {
            'test':['1','2','3','3'],
            'test2':['4','5','6','2'],
            'test3':['7','8','9','5'],
            'test4':['4','3','4','8'],
        };

        table = QtGui.QTableWidget(self);
        table.setRowCount( self.X );
        table.setColumnCount( self.Y );
        horHeaders = []
        
        for n, key in enumerate(sorted(data.keys())):
            horHeaders.append(key);
        
            for m, item in enumerate(data[key]):
                newitem = QtGui.QTableWidgetItem(item);
                table.setItem(m, n, newitem);
        
        table.setHorizontalHeaderLabels(horHeaders);
        table.resizeColumnsToContents();
        table.resizeRowsToContents();
        grid.addWidget(table, 0, 0);
        self.show();

    # выравнивание по центру экрана
    def center(self):
        screen = QtGui.QDesktopWidget().screenGeometry();
        size = self.geometry();
        self.move((screen.width()-size.width())/2, (screen.height()-size.height())/2);
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/

Последний раз редактировалось pompiduskus; 29.10.2016 в 14:52.
pompiduskus вне форума Ответить с цитированием
Старый 29.10.2016, 14:55   #9
kos94ok
Пользователь
 
Регистрация: 27.12.2010
Сообщений: 28
По умолчанию

Да это и есть import mod , просто для содержания 2х пременных, а вывод в терминал просто для того что бы видеть что он работает. Всего 3 файла , я их подписал. Главное окно это test.py второе это mod.py третье test2.py.
Ой я я test2.py случайно импортировал в test.py ну это суть не миняет.
kos94ok вне форума Ответить с цитированием
Старый 29.10.2016, 14:57   #10
pompiduskus
юзер как все
Участник клуба
 
Аватар для pompiduskus
 
Регистрация: 10.01.2012
Сообщений: 1,586
По умолчанию

Я выложил рабочий код выше. Всего 2 файла. Протестил, все работат
<Дзен - Вся вселенная в тебе > | Резюме: https://ch3ll0v3k.github.io/CV/
pompiduskus вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь Ляйсан9517 Помощь студентам 5 02.04.2014 15:34
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24
Очень нужна помощь с написанием программы... срочно(буду благодарен за помощь) 5Paladin5 Помощь студентам 3 02.07.2009 09:12