Форум сайта python.su
Привет народ.
Посоветуйте, пожалуйста, как мне лучше сделать меню выпадающее из курсора (или лучше в заданном месте монитора). Вроде меню выпадающего у 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)
Офлайн
можно в PyQt сделать через SystemTray если добавить хоткеу
тут гляньте
Офлайн
За ссыль спасибо, но зачем чтоб оно всегда висело? Вешается на хоткей средствами убунты. И в винде тоже есть системные и не совсем системные средства.
Запустилось, показало меню - тыкнул в него, оно в курсор впечатло строку и закрылось, тыкнул мимо меню - просто закрылось.
Отредактировано elizar (Сен. 9, 2017 12:27:58)
Офлайн
можно через 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)
Офлайн
Похоже у меня не получается объяснить что мне нужно.
Окошка не надо, список уж в tkinter рисовал, но это не то. Вообще тему надо было в GUI открывать. Как делать вставку и всё остальное понятно, только как это графически оформить не понятно.
Однако, по поводу трея - это не плохая альтернатива. Пусть эта самая менюшка из трея и вылазит, почему бы нет. Где-то ведь по-любому должны быть готовые решения, чтоб только сказать “рисуй меню для трея с такими-то пунктами и подпуктами” и всё готово? Буду гуглить, благодарю в самом деле.
Отредактировано elizar (Сен. 11, 2017 08:38:39)
Офлайн
как вы хотите я понял, но нереально. окно в котором вы работаете(терминал или браузер) забирает фокус ввода и на ПКМ у него своя реакция, переключаться между окнами так и так придется. реально это
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_())
Отредактировано vic57 (Сен. 11, 2017 10:12:40)
Офлайн