Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 9, 2017 07:34:45

elizar
Зарегистрирован: 2017-09-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Выпадающая менюшка

Привет народ.
Посоветуйте, пожалуйста, как мне лучше сделать меню выпадающее из курсора (или лучше в заданном месте монитора). Вроде меню выпадающего у Punto Switcher / Glipper с историей буфера обмена, но только чтоб были субменю.
Собственно, идея в том, что мне периодически нужно вставлять в консоль разнообразные команды типа
grep dump /usr/local/ispmgr/etc/ispmgr.conf | awk ‘{print $3,$4,$5}’ | sh | perl -pi -e ‘s/\\00/@/g’ | perl -pi -e ‘s/\@userPassword//g’ | grep -A1 ‘@’
или текст вроде “Проверьте, пожалуйста, работу Ваших сайтов.” в браузер. Да-да, техподержка хостинга… Так вот, было бы удобно брать всё это из менюхи с поддиректориями выпадающей по хоткею.
Конечно же, искал требуемую прогу, ничего похожего не нашёл. Может плохо искал? Или есть другие более лучшие решения?
На питоне писал, потому на нём бы и хотелось. Но всё что писал было консольное, а тут требуется гуй. Нужно чтоб работало на Unity в Ubuntu. Но если и коллегам под виндой пойдёт, они, как мне кажется, совсем не будут против.

Отредактировано elizar (Сен. 9, 2017 10:02:49)

Офлайн

#2 Сен. 9, 2017 11:24:10

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Выпадающая менюшка

можно в PyQt сделать через SystemTray если добавить хоткеу
тут гляньте

Офлайн

#3 Сен. 9, 2017 12:26:07

elizar
Зарегистрирован: 2017-09-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Выпадающая менюшка

За ссыль спасибо, но зачем чтоб оно всегда висело? Вешается на хоткей средствами убунты. И в винде тоже есть системные и не совсем системные средства.
Запустилось, показало меню - тыкнул в него, оно в курсор впечатло строку и закрылось, тыкнул мимо меню - просто закрылось.

Отредактировано elizar (Сен. 9, 2017 12:27:58)

Офлайн

#4 Сен. 9, 2017 16:47:14

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Выпадающая менюшка

можно через clipboard

 import sys
import pyperclip as clip
from PyQt5.QtWidgets import QApplication,QListWidget 
class List(QListWidget):
 	def __init__(self,parent=None):
 		QListWidget.__init__(self,parent)
 		self.addItems(['one','two','three'])
 		self.currentTextChanged.connect(self.textChanged)
 	def textChanged(self,text):
 		clip.copy(text)
if __name__=="__main__":
	app = QApplication(sys.argv)
	w = List()
	w.move(0,0)
	w.show()
	sys.exit(app.exec_())
но лучше чтобы было в трее, чем запускать/удалять каждый раз

Отредактировано vic57 (Сен. 9, 2017 16:48:18)

Офлайн

#5 Сен. 11, 2017 08:15:08

elizar
Зарегистрирован: 2017-09-09
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Выпадающая менюшка

Похоже у меня не получается объяснить что мне нужно.
Окошка не надо, список уж в tkinter рисовал, но это не то. Вообще тему надо было в GUI открывать. Как делать вставку и всё остальное понятно, только как это графически оформить не понятно.
Однако, по поводу трея - это не плохая альтернатива. Пусть эта самая менюшка из трея и вылазит, почему бы нет. Где-то ведь по-любому должны быть готовые решения, чтоб только сказать “рисуй меню для трея с такими-то пунктами и подпуктами” и всё готово? Буду гуглить, благодарю в самом деле.

Отредактировано elizar (Сен. 11, 2017 08:38:39)

Офлайн

#6 Сен. 11, 2017 10:12:11

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Выпадающая менюшка

как вы хотите я понял, но нереально. окно в котором вы работаете(терминал или браузер) забирает фокус ввода и на ПКМ у него своя реакция, переключаться между окнами так и так придется. реально это

 import sys
import pyperclip as clip
from PyQt5.Qt import *
 
class List(QListWidget):
 	def __init__(self,parent=None):
 		QListWidget.__init__(self,parent)
 		self.addItems(['one','two','three','four'])
 		self.setCurrentRow(0)
 		self.currentTextChanged.connect(self.textChanged)
 		self.tray = QSystemTrayIcon(self)
 		self.tray.setIcon(self.style().standardIcon(QStyle.SP_ComputerIcon))
 		self.tray.activated.connect(self.tray_activated)
 		self.tray.show()
 	def tray_activated(self,reason):
 		if reason == 3:
 			if self.isVisible(): self.hide()
 			else: self.show()
 			
 	def textChanged(self,txt):
 		clip.copy(txt)
if __name__=="__main__":
	app = QApplication(sys.argv)
	w = List()
	w.move(0,0)
	w.show()
	sys.exit(app.exec_())
выбираете пункт, возвращаетесь в свое окно и Ctrl-V

Отредактировано vic57 (Сен. 11, 2017 10:12:40)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version