Уведомления

Группа в Telegram: @pythonsu

#1 Март 21, 2017 02:56:51

WhattaSkill
Зарегистрирован: 2016-11-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Бабл при помощи Tkinter.

Здравствуйте! Хочу сделать всплывающую подсказку при направлении на некий элемент интерфейса. В данный момент использую Pwm, но его пузырь к сожалению оказался довольно слабым для моих нужд. Поэтому решил сделать подсказку при помощи TopLevel. Народ подскажите пожалуйста можно ли удалить заголовок у окна нового или или есть другой способ сделать балун?

Офлайн

#2 Март 21, 2017 08:38:06

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Бабл при помощи Tkinter.

Нет Точнее есть, но оконный менеджер теряет в этом случае toplevel из своего потока управления.

Если все же надумаете, то смотрите параметр overredirect

Офлайн

#3 Март 21, 2017 09:23:21

WhattaSkill
Зарегистрирован: 2016-11-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Бабл при помощи Tkinter.

4kpt_V
Нет Точнее есть, но оконный менеджер теряет в этом случае toplevel из своего потока управления.Если все же надумаете, то смотрите параметр overredirect
То есть если я Вас правильно понял. После этого я не смогу сделать destroy этого toplevel'a?

Офлайн

#4 Март 21, 2017 10:12:33

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Бабл при помощи Tkinter.

Можете. Только alt-tab работать не будет.

P.S. Иногда проще попробовать, чем ждать ответа

Офлайн

#5 Март 21, 2017 15:50:46

WhattaSkill
Зарегистрирован: 2016-11-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Бабл при помощи Tkinter.

4kpt_V
Можете. Только alt-tab работать не будет.P.S. Иногда проще попробовать, чем ждать ответа
 #_________________________________________________________________________________________________________РАЗРАБАТЫВАЮ ПУЗЫРЬ
		
def getXY(event):
	global getx, gety
	getx=event.x_root
	gety=event.y_root
	print(getx,gety)
def Buble(x):
	global top
	if x=="Enter":
		top = Toplevel()
		top.title("About this application...")
		top.overrideredirect(True)
		top.geometry("+{}+{}".format(getx, gety))
		msg = Message(top, text="аывафывафыва")
		msg.pack()
	elif x=="Destro":
		top.destroy()
#Статус поле
statust = Text(root,width=20,height=3,font="Gabriola", wrap=WORD)
statust.place(x=1013,y=360,width=246,height=285)
statust.bind("<Enter>", getXY)
statust.bind("<Enter>", lambda e: Buble("Enter"))
statust.bind("<Leave>", lambda e: Buble("Destro"))
Извиняюсь ещё раз попробовал вот таким способом. Либо я неправильно понял override либо я не знаю. То что на неё нельзя альабнуться это только мне в плюс) Я же делаю всплывающее окно подсказку как к примеру в Diablo, Torthlight, Ведьмак и других рпг. При направлении на картинку предмета должно появлятся окно (Пузырь, Бабл) в котором будут висеть картинка и текст. Как добавить картинку и текст в окно для меня это проблемы не состовляет а вот создать само окно проблема) В данный момент у меня возникает ещё одна ошибка. Он не успевает проверить координаты и в итоге пилит окно в рандомной левой верхней части указывая ошибку что event Не найден в
 top.geometry("+{}+{}".format(getx, gety))
строке.

Отредактировано WhattaSkill (Март 21, 2017 15:55:56)

Офлайн

#6 Март 21, 2017 17:32:59

WhattaSkill
Зарегистрирован: 2016-11-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Бабл при помощи Tkinter.

 #_________________________________________________________________________________________________________РАЗРАБАТЫВАЮ ПУЗЫРЬ
		
def getXY(event):
	global getx, gety
	getx=event.x_root
	gety=event.y_root
	print(getx,gety)
def Buble(x):
	global top,getxpos,getypos,getx, gety
	if x=="Enter":
		top = Toplevel()
		top.title("About this application...")
		top.overrideredirect(True)
		getxpos=getx;getypos=gety
		top.geometry("+{}+{}".format(getxpos+5, getypos+5))
		msg = Message(top, text="вапывп")
		msg.pack()
	elif x=="Destro":
		top.destroy()
	elif x=="Inside":
		if getx>getxpos+10 or getx<getxpos-10 or gety>getypos+10 or gety<getypos-10:
			try:
				top.destroy()
			except:
				None
			top = Toplevel()
			top.title("About this application...")
			top.overrideredirect(True)
			getxpos=getx;getypos=gety
			top.geometry("+{}+{}".format(getxpos+5, getypos+5))
			msg = Message(top, text="ыапывапвыап")
			msg.pack()
#Статус поле
statust = Text(root,width=20,height=3,font="Gabriola", wrap=WORD)
statust.place(x=1013,y=360,width=246,height=285)
root.bind("<Motion>", getXY)
statust.bind("<Enter>", lambda e: Buble("Enter"))
statust.bind("<Leave>", lambda e: Buble("Destro"))
statust.bind("<Motion>", lambda e: Buble("Inside"))
Идеально вот так работает как часы) Единственное что вопрос конечно не совсем по теме но вы не можете мне рассказать об масштабировании элементов. Видетели я расставил всё при помощи Place и когда я увеличиваю размер окна элементы не меняют размер, а окно просто делает белую зону. Так вот пользуясь pack() смогу ли я сделать нормальным масштабирование? Ну или может есть вариант с масштабированием Place. Элементы text, ent, canvas,menu.

Офлайн

#7 Март 21, 2017 17:41:52

WhattaSkill
Зарегистрирован: 2016-11-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Бабл при помощи Tkinter.

Вот снимок того что получилось) точкой обозначил курсор.

Прикреплённый файлы:
attachment Снимок.PNG (93,5 KБ)

Офлайн

#8 Март 21, 2017 18:15:58

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Бабл при помощи Tkinter.

Есть pack, place, grid. Выбирайте любой…

Офлайн

#9 Март 22, 2017 08:39:47

WhattaSkill
Зарегистрирован: 2016-11-20
Сообщения: 15
Репутация: +  0  -
Профиль   Отправить e-mail  

Бабл при помощи Tkinter.

4kpt_V
Есть pack, place, grid. Выбирайте любой…
Доброе утро!
Вопрос заключается в масштабировании элементов на окне программы к примеру при использовании place увеличение экрана не к чему не приводит только к появлению пустой области а уменьшение к обрезки области. Pack и Grid Не имеют подобных изъянов? Просто мне Place по душе что я могу настраивать расстояние между объектами которое мне надо (Для размеров по умолчанию). Может вы сможете подсказать мне интересную коротенькую литературу для того чтобы узнать больше о tkinter и подробно. Что то вроде Вот этой темы

Отредактировано WhattaSkill (Март 22, 2017 12:18:28)

Офлайн

#10 Март 22, 2017 12:48:58

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

Бабл при помощи Tkinter.

WhattaSkill
Да. Они настраиваются. Настраивается растягивание. pack фактически как html-льный absolut, который работает поверх всего и вся

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version