Форум русскоязычного сообщества Ubuntu


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

Автор Тема: Tkiner, как вывести результат SQL-запроса на форму tkiner  (Прочитано 1256 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Cyberaxe77

  • Автор темы
  • Новичок
  • *
  • Сообщений: 2
    • Просмотр профиля
Здравствуйте, уважаемые знатоки.
Суть проблемы:
Есть некая база (MySQL). В одной из таблиц считаю количество автомашин на объекте и пытаюсь количество отобразить на форме (Tkinter) в Label.
По доброй (для всех новичков) традиции, интерпретатор ругается ошибками))).
Код тестовый, окно простейшее. Очень прошу помощи у сообщества. Заранее благодарю. Ниже код и выхлоп ошибки.
#!/usr/bin/python3
# -*- coding:utf-8 -*-
 
from tkinter import *
import mysql.connector
 
conn = mysql.connector.connect(host='localhost',
                               database='cars',
                               user='root',
                               password='axe',
                               buffered=True)
 
cursor = conn.cursor()
myquery = "SELECT count(*) FROM io_count"
cursor.execute(myquery)
cars_count = cursor.fetchone()
number_of_row = cars_count[0]
 
window = Tk()
window.title('Пример окна tkinter')
 
label = Label(window, number_of_row)
 
 
label.pack(padx=200, pady=50)
 
window.mainloop()

Ругань в консоли:
/usr/bin/python3.5 /home/axe/Python/Projects/tkinter/file1.py
Traceback (most recent call last):
  File "/home/axe/Python/Projects/tkinter/file1.py", line 23, in <module>
    label = Label(window, number_of_row)
  File "/usr/lib/python3.5/tkinter/__init__.py", line 2609, in __init__
    Widget.__init__(self, master, 'label', cnf, kw)
  File "/usr/lib/python3.5/tkinter/__init__.py", line 2135, in __init__
    BaseWidget._setup(self, master, cnf)
  File "/usr/lib/python3.5/tkinter/__init__.py", line 2115, in _setup
    if 'name' in cnf:
TypeError: argument of type 'int' is not iterable

Update!!! Данная проблема решена!
Но появилась следующая по текущей теме.
В продолжение темы... Теперь пытаюсь вывести количество машин на форму в "стиле ООП". По-задумке после слов "Количество ТС на объекте: " должно отображаться собственно количество ТС на объекте. Появляется другая ругань:
# класс дочернего окна количества ТС на объекте
class countCars:
    def __init__(self, master):
        self.slave_count = Toplevel(master)
        self.slave_count.title('Количество ТС на объекте')
        self.slave_count.geometry('400x100+500+375')
 
        self.btn_exit = Button(self.slave_count, text='Выход',
                               width=10, height=1, bd=2, command=self.exitCountCars)
 
        self.lbl_count = Label(
            self.slave_count, text='Количество ТС на объекте:' + str(self.number_of_row))
 
        self.btn_exit.place(x=290, y=70)
        self.btn_count.place(x=290, y=20)
        self.lbl_count.place(x=10, y=20)
 
        self.slave_count.grab_set()
        self.slave_count.focus_set()
        self.slave_count.wait_window()
        self.slave_count.mainloop()
 
    # функции дочернего окна количество ТС на объекте
    def exitCountCars(self):
        self.slave_count.destroy()
 
    def count_cars(self):
        conn = mysql.connector.connect(host='localhost',
                                       database='cars',
                                       user='root',
                                       password='axe',
                                       buffered=True)
 
        self.cursor = conn.cursor()
        myquery = "SELECT count(*) FROM io_count"
        self.cursor.execute(myquery)
        self.cars_count = self.cursor.fetchone()
        self.number_of_row = self.cars_count[0]
 
 
        self.cursor.close()
        self.conn.commit()
        self.conn.close()
Ругается:
Exception in Tkinter callback
Traceback (most recent call last):
File "/usr/lib/python3.5/tkinter/__init__.py", line 1553, in __call__
return self.func(*args)
File "/home/axe/Python/Projects/tkinter/window1.py", line 59, in openCountCars
countCars(self.master)
File "/home/axe/Python/Projects/tkinter/window1.py", line 111, in __init__
self.slave_count, text='Количество ТС на объекте:' + str(self.number_of_row))
AttributeError: 'countCars' object has no attribute 'number_of_row'

Ещё один апдейт!
Всем спасибо! Проблема решена.
(Нажмите, чтобы показать/скрыть)

Выкладываю рабочий (не факт что хороший) код. Может кому сгодится.
« Последнее редактирование: 17 Августа 2016, 14:23:38 от Cyberaxe77 »

 

Страница сгенерирована за 0.018 секунд. Запросов: 22.