Tkinter лучший метод перелистывания текста кнопки - PullRequest
0 голосов
/ 16 мая 2018

Итак, я работаю над проектом tkinter, и одна проблема, с которой я сталкиваюсь, - это найти способ перевернуть / повернуть текст объекта кнопки по вертикали.Один из способов, которым я могу обмануть, чтобы это произошло, - это поместить объект canvas поверх кнопки так, чтобы холст рисовался последним (как показано ниже), но есть ли более чистый способ приблизиться к этому, просто манипулируя атрибутами объекта Button?

from tkinter import*
root = Tk()
windowDimensions = (1300,600)
root.title("Mapper")


root.geometry(str(windowDimensions[0])+"x"+str(windowDimensions[1]))

button1=Button(root,text='',width=2,height=9)
button1.place(x=0,y=20)
can = Canvas(root,width=15,height=80)
can.place(x=2,y=30)
can.create_text(0, 80, anchor="nw", angle=90,text='hello',font=("Purisa", 12))

root.mainloop()

Редактировать: проблема, с которой я сталкиваюсь при этом, заключается в любом месте, где холст находится на кнопке, это препятствует возможности щелкнуть там, где находится холст.

1 Ответ

0 голосов
/ 16 мая 2018

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

from tkinter import*
root = Tk()

# .gif file encoded as base64
vert_button_data = '''
R0lGODlhDQBCAKUkAAAAAAAANgAAYDYAADYANjYAYGAAAGAANmAAYAA2hzY2h4c2AGA2h4c2NgBg
qzZghzZgq2BgNqtgAKtgNjaHhzaHzmCHh6uHNs6HNmCr8PCrYIfOq4fO8PDOh6vwq6vw8M7w8PDw
q/DwzvDw8P//////////////////////////////////////////////////////////////////
/////////////////////////////////////////////ywAAAAADQBCAAAG/sCRcEgsGo+cpFJJ
PDgPAWeUGKpSMFUM5Qggdo2DDAiU+RY7BoXCoDmOQp1OqLisN5/4A7XqqfqPAm5EERVLRwcGeEd+
f0gZGR9uGQQSEgUcXB1CHQFcXkdhHx8ZA0doBQUGmotxc0QOhZFuGhgNCLAcskUiIbQNAg5HHxwV
DwYSRMQQCBMYckUHAxYbIG5wtQwOGRzVRrwaFwEJRiAcGQ4KCxhE5woNEhodIkXw8oL3+Pn35pCS
lJaYjABYxcnTEDNEQo0qZeRUqlVG4DxLVofJkDyKhjDaSLFiQCEYn+zZWEVYhWAjUBYRoOELwoMj
XILiAOBDBYZnoj201oqOIMePI/BEEanRDwBGbl4avKdUyBIAhi4+SURUCMlG+oIAADs=
'''

windowDimensions = (1300,600)
root.title("Mapper")
root.geometry("{}x{}".format(*windowDimensions))
button1_image = PhotoImage(data=vert_button_data)
button1=Button(root,image=button1_image)
button1.place(x=0,y=20)
root.mainloop()

Вы потеряете анимацию при наведении, но опять же это то, что вы можете воссоздать с изображениями.

Чтобы получить данные в кодировке base64 из .gif, вы можете использовать это:

import codecs
with open('export.gif', 'rb') as f:
    print(codecs.encode(f.read(), 'base64').decode())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...