Задать вопрос
rishatss
@rishatss
Simple Developer ^)

Как правильно вызвать метод класса и передать ему аргументы из другого класса?

Добрый вечер господа.
Никак не могу сделать окошко . в которую вводишь SQL запрос и он срабатывает.
Сделал окошко и кнопку отправки запроса, а вот в ООП стиле появились проблемы.
Как решить данную ошибку.

# -*- coding: utf-8 -*-
import sys,sqlite3
from PyQt4.QtCore import SIGNAL
from PyQt4.QtGui import QDialog, QApplication, QPushButton, QLineEdit, QFormLayout

class Obrabotka:

    def sql(sqltext):
        con = sqlite3.connect("students.db")
        cur = con.cursor()  # Создаем объект-курсор
        try:
            cur.execute(str(sqltext))
        except sqlite3.DatabaseError, err:
            print u"Ошибка:", err
        else:
            print u"Запрос успешно выполнен"
        cur.close()
        con.close()

class Form(QDialog):
    def __init__(self, parent=None):

        super(Form, self).__init__(parent)

        self.le = QLineEdit()
        self.le.setObjectName("host")
        self.le.setText("")

        self.pb = QPushButton()
        self.pb.setObjectName("connect")
        self.pb.setText(u"Отправить")

        layout = QFormLayout()
        layout.addWidget(self.le)
        layout.addWidget(self.pb)

        self.setLayout(layout)
        self.connect(self.pb, SIGNAL("clicked()"),self.button_click)
        self.setWindowTitle(u"Запрос")



    def button_click(self):
        # shost is a QString object
        sqltext = self.le.text()
        Obrabotka.sql(sqltext)

ERROR

D:\Program\Python27\python.exe D:/workspace/pycharm/Project/Qt/Project3/test.py
Traceback (most recent call last):
  File "D:/workspace/pycharm/Project/Qt/Project3/test.py", line 46, in button_click
    Obrabotka.sql(sqltext)
TypeError: unbound method sql() must be called with Obrabotka instance as first argument (got QString instance instead)

Process finished with exit code 0
  • Вопрос задан
  • 533 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
urtow
@urtow
*nix, python, QA, bagpipe, folk music
Создай инстанс класса:
def button_click(self):
        # shost is a QString object
        sqltext = self.le.text()
        obr = Obrabotka()
        obr.sql(sqltext)
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@ape364
Не надо называть класс Obrabotka
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы