У меня есть инструмент Python с виджетом CheckboxTreeview. Некоторое содержимое древовидного представления слишком длинное для отображения. Я хотел бы предложить пользователю всплывающую подсказку, если это так. У меня уже есть всплывающие подсказки в моем инструменте в других местах, но я не могу установить всплывающую подсказку для отдельного содержимого в CheckboxTreeview. Знаете ли вы, как это возможно?
Ниже приведен минимальный пример, в котором я хотел бы иметь всплывающую подсказку для ссылки ref2. Как это возможно?
import tkinter as tk
from tkinter import ttk
from ttkwidgets import CheckboxTreeview
class CreateToolTip(object):
def __init__(self, widget, text='tooltip text', wraplength=180):
self.waittime = 400 #miliseconds
self.bg = '#fdfde3'
self.wraplength = wraplength #pixels
self.widget = widget
self.text = text
self.widget.bind("", self.enter)
self.widget.bind("", self.leave)
self.widget.bind("", self.leave)
self.id = None
self.tw = None
def enter(self, event=None):
self.schedule()
def leave(self, event=None):
self.unschedule()
self.hidetip()
def schedule(self):
self.unschedule()
self.id = self.widget.after(self.waittime, self.showtip)
def unschedule(self):
id = self.id
self.id = None
if id:
self.widget.after_cancel(id)
def showtip(self, event=None):
x, y, cx, cy = self.widget.bbox("insert")
self.tw = tk.Toplevel(self.widget)
self.tw.wm_overrideredirect(True)
tk.Label(self.tw, text=self.text, justify='left',background=self.bg,
relief='solid', borderwidth=1,wraplength = self.wraplength
).pack(ipadx=10)
x += self.widget.winfo_rootx()
y += self.widget.winfo_rooty()
self.tw.wm_geometry("+%d+%d" % (x, y))
def hidetip(self):
tw = self.tw
self.tw= None
if tw:
tw.destroy()
class App():
def __init__(self, master):
self.master = master
self.master.geometry('300x400')
self.master.columnconfigure(0, weight=1)
self.tree = CheckboxTreeview(self.master)
xsb = ttk.Scrollbar(self.master, orient='horizontal', command=self.tree.xview)
ysb = ttk.Scrollbar(self.master, orient='vertical', command=self.tree.yview)
self.tree.configure(yscroll=ysb.set)
self.tree['columns']=('x', 'y')
self.tree.column('x', anchor='e', width=40)
self.tree.column('y', width=40)
self.tree.heading('#0', text='abc', anchor='w')
self.tree.heading('x', text='x', anchor='w')
self.tree.heading('y', text='y', anchor='w')
self.tree.grid(row=0, column=0)
ysb.grid(row=0, column=1, sticky='ns')
xsb.grid(row=1, column=0, sticky='ew')
self.master.frame = tk.Frame(self.master, highlightbackground="black", highlightthickness=2)
self.master.frame.grid(row=4, column=0, columnspan=2, sticky='w')
ref = tk.Label(self.master.frame, text='TEXT', font=tk.font.Font(size=16, weight='bold'))
ref.grid(row=0, column=0)
CreateToolTip(ref, text='tooltip')
ref1 = self.tree.insert('', 'end', text='node 1', values=('x1', 'y1'), open=True)
ref2 = self.tree.insert('', 'end', text='node 2 - this is a very long text where a tooltip should be displayed', values=('x2', 'y2'), open=True)
root = tk.Tk()
app = App(root)
app.master.mainloop()
Подробнее здесь: https://stackoverflow.com/questions/792 ... ch-element
Tkinter — CheckboxTreeview с подсказкой для каждого элемента ⇐ Python
Программы на Python
-
Anonymous
1733501285
Anonymous
У меня есть инструмент Python с виджетом CheckboxTreeview. Некоторое содержимое древовидного представления слишком длинное для отображения. Я хотел бы предложить пользователю всплывающую подсказку, если это так. У меня уже есть всплывающие подсказки в моем инструменте в других местах, но я не могу установить всплывающую подсказку для отдельного содержимого в CheckboxTreeview. Знаете ли вы, как это возможно?
Ниже приведен минимальный пример, в котором я хотел бы иметь всплывающую подсказку для ссылки ref2. Как это возможно?
import tkinter as tk
from tkinter import ttk
from ttkwidgets import CheckboxTreeview
class CreateToolTip(object):
def __init__(self, widget, text='tooltip text', wraplength=180):
self.waittime = 400 #miliseconds
self.bg = '#fdfde3'
self.wraplength = wraplength #pixels
self.widget = widget
self.text = text
self.widget.bind("", self.enter)
self.widget.bind("", self.leave)
self.widget.bind("", self.leave)
self.id = None
self.tw = None
def enter(self, event=None):
self.schedule()
def leave(self, event=None):
self.unschedule()
self.hidetip()
def schedule(self):
self.unschedule()
self.id = self.widget.after(self.waittime, self.showtip)
def unschedule(self):
id = self.id
self.id = None
if id:
self.widget.after_cancel(id)
def showtip(self, event=None):
x, y, cx, cy = self.widget.bbox("insert")
self.tw = tk.Toplevel(self.widget)
self.tw.wm_overrideredirect(True)
tk.Label(self.tw, text=self.text, justify='left',background=self.bg,
relief='solid', borderwidth=1,wraplength = self.wraplength
).pack(ipadx=10)
x += self.widget.winfo_rootx()
y += self.widget.winfo_rooty()
self.tw.wm_geometry("+%d+%d" % (x, y))
def hidetip(self):
tw = self.tw
self.tw= None
if tw:
tw.destroy()
class App():
def __init__(self, master):
self.master = master
self.master.geometry('300x400')
self.master.columnconfigure(0, weight=1)
self.tree = CheckboxTreeview(self.master)
xsb = ttk.Scrollbar(self.master, orient='horizontal', command=self.tree.xview)
ysb = ttk.Scrollbar(self.master, orient='vertical', command=self.tree.yview)
self.tree.configure(yscroll=ysb.set)
self.tree['columns']=('x', 'y')
self.tree.column('x', anchor='e', width=40)
self.tree.column('y', width=40)
self.tree.heading('#0', text='abc', anchor='w')
self.tree.heading('x', text='x', anchor='w')
self.tree.heading('y', text='y', anchor='w')
self.tree.grid(row=0, column=0)
ysb.grid(row=0, column=1, sticky='ns')
xsb.grid(row=1, column=0, sticky='ew')
self.master.frame = tk.Frame(self.master, highlightbackground="black", highlightthickness=2)
self.master.frame.grid(row=4, column=0, columnspan=2, sticky='w')
ref = tk.Label(self.master.frame, text='TEXT', font=tk.font.Font(size=16, weight='bold'))
ref.grid(row=0, column=0)
CreateToolTip(ref, text='tooltip')
ref1 = self.tree.insert('', 'end', text='node 1', values=('x1', 'y1'), open=True)
ref2 = self.tree.insert('', 'end', text='node 2 - this is a very long text where a tooltip should be displayed', values=('x2', 'y2'), open=True)
root = tk.Tk()
app = App(root)
app.master.mainloop()
Подробнее здесь: [url]https://stackoverflow.com/questions/79258659/tkinter-checkboxtreeview-with-tooltip-for-each-element[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия