Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » GUI
  • » Вывод надписей на create_rectangle в tkinter [RSS Feed]

#1 Авг. 25, 2013 00:56:41

Karnaval
От:
Зарегистрирован: 2011-10-17
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод надписей на create_rectangle в tkinter

Добрый всем день.

Подскажите, пожалуйста: Создаю в tkinter функцию которую затем вызываю в цикле для рисования группы квадратов и проставления в них значения:

from tkinter import *
tk = Tk()
canv = Canvas(tk, width = 800, height = 600, bg = "lightblue")
canv.pack()
def checkered(width_r, height_r, x_r, y_r, cor_x, cor_y, cont):
    canv.create_rectangle(width_r, height_r, x_r, y_r)
    canv.create_text(cor_x, cor_y, text=cont)
for g in range(15):
    num = 30 * g
    cor_x = 18 * g
    print (checkered(30, 30, num, 0, cor_x, 10, g))
tk.mainloop()

Работает, но не получается текст накладывать ровно. Хочется, чтобы вывод значений был увязан с каждым конкретным квадратом. Как этого можно достичь? Буду благодарен за любую подсказку.

Спасибо.



Офлайн

#2 Авг. 25, 2013 01:30:11

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Вывод надписей на create_rectangle в tkinter

Простите. Не совсем понял, зачем это нужно :)
Может лучше построить группу canvas необходимого размера и в каждый из них внести число?
Будет ли что-то дальше происходить с этими квадратами - числами или они остануться статичными?
В принципе, можно высчитать место для цифры. Просто пытаюсь понять, действительно ли это нужно. Решение очень сомнительное :)

P.S. Хочу помочь, но нужно понять в чем…



Отредактировано 4kpt (Авг. 25, 2013 01:31:23)

Офлайн

#3 Авг. 25, 2013 14:07:24

Karnaval
От:
Зарегистрирован: 2011-10-17
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод надписей на create_rectangle в tkinter

4kpt
Простите. Не совсем понял, зачем это нужно :)Может лучше построить группу canvas необходимого размера и в каждый из них внести число?Будет ли что-то дальше происходить с этими квадратами - числами или они остануться статичными?В принципе, можно высчитать место для цифры. Просто пытаюсь понять, действительно ли это нужно. Решение очень сомнительное :)P.S. Хочу помочь, но нужно понять в чем…

Идея выглядит так: Есть некая поляна из клеток (условно, можно говорить о шахматной доске). Каждой клетка в зависимости от значения из базы данных, будет присвоен свой свой цвет. Что бы понимать, почему каждой клетке присвоено то или иное цифровое значение, поверх клетки будет выводиться число. Сами клетки и числа статичны.
Хочется понять, как можно написать функцию, при вызове которой нарисуется квадрат в который текст (что самое важное) будет по умолчанию в центре квадрата. Может быть бесконечное число рядов квадратов и самих кадратов, поэтому работать с x и y координатами у каждой надписи кажется не совсем рациональным решением.

Решение проблемы, я вижу в высчитывании отступа от левого внутреннего края квадрата, но не знаю можно ли такое в tkinter делать.



Офлайн

#4 Авг. 25, 2013 14:11:30

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Вывод надписей на create_rectangle в tkinter

Karnaval
Решение проблемы, я вижу в высчитывании отступа от левого внутреннего края квадрата, но не знаю можно ли такое в tkinter делать.
Мое мнение. Не верно Вы видите :)
В идеале это сделать массив canvas, цвет которых зависит от данных из базы. В каждом canvas рационально разместить число. Можно еще сделать это с помощью button, т.е. использовать массив кнопок. Заодно и будет возможность по ним потыкать :)

P.S. Если нужен пример - пишите…



Офлайн

#5 Авг. 25, 2013 16:57:52

Karnaval
От:
Зарегистрирован: 2011-10-17
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод надписей на create_rectangle в tkinter

4kpt
эмм.. кажется я начинаю понимать. Т.е. можно создать не один canvas и располагать на нём объекты, а создать множество клеток, где каждая клетка отдельный canvas?



Офлайн

#6 Авг. 25, 2013 17:35:40

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Вывод надписей на create_rectangle в tkinter

Karnaval
эмм.. кажется я начинаю понимать. Т.е. можно создать не один canvas и располагать на нём объекты, а создать множество клеток, где каждая клетка отдельный canvas?
Я воль, майн фюрер :)

P.S. Ну так помощь нужна?



Отредактировано 4kpt (Авг. 25, 2013 17:36:20)

Офлайн

#7 Авг. 25, 2013 18:24:58

Karnaval
От:
Зарегистрирован: 2011-10-17
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Вывод надписей на create_rectangle в tkinter

4kpt
Пока не надо, Вы и так очень помогли =) Попробую поковыряться и делать наверное буду как вы и советовали - кнопками.



Офлайн

#8 Авг. 25, 2013 18:57:52

4kpt
От: Харьков
Зарегистрирован: 2010-11-03
Сообщения: 998
Репутация: +  63  -
Профиль   Отправить e-mail  

Вывод надписей на create_rectangle в tkinter

Не забудьте на кнопках поменять свойства relief и bd :)

P.S. Пишите, если что…



Офлайн

#9 Авг. 25, 2013 19:31:02

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Вывод надписей на create_rectangle в tkinter

можно так

from tkinter import *
tk = Tk()
canv = Canvas(tk, width = 1024, height = 900, bg = "lightblue")
canv.pack()
SIZE_X = 50
SIZE_Y = 16
for x in range(20):
    for y in range(20):
        numx = SIZE_X * x
        numy = SIZE_Y * y
        canv.create_rectangle(numx, numy, numx+SIZE_X, numy+SIZE_Y)
        canv.create_text(numx+SIZE_X/2  , numy+SIZE_Y/2, text="%s-%s"%(x,y))
tk.mainloop()



Офлайн

  • Начало
  • » GUI
  • » Вывод надписей на create_rectangle в tkinter[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version