Seite 1 von 1
QToolBar - Fokus setzen
Verfasst: Montag 20. Februar 2023, 17:53
von Nobuddy
Hallo zusammen,
möchte mal nachfragen, ob es möglich ist mit z.B. Q.CTRL + Q.Key_Up auf den ersten Toolbutton den Fokus zu setzen?
Grüße Nobuddy
Re: QToolBar - Fokus setzen
Verfasst: Montag 20. Februar 2023, 18:08
von __deets__
Ist es nicht eher ueblich, Shortcuts fuer Toolbar-Elemente zu machen? So kenne ich das zumindest von Word & Co. Der eine klickt, der andere macht es per Keyboard. Aber wer eine GUI per keyboard navigieren will (mache ich oft) wuerde doch niemals da rein per Key den Focus legen, und sich dann muehselig mit Tabs und Arrow-Keys irgendwo hinhangeln.
Re: QToolBar - Fokus setzen
Verfasst: Montag 20. Februar 2023, 18:21
von Nobuddy
Ja, das mit den Shortcuts, ist klar.
Ist eine spezielle Idee meinerseits. Ein QMainWindow mit eine Toolbar wird gestartet. Nach dem Start, würde ich gerne den Fokus auf den ersten Toolbutton der Toolbar setzen, um anschließend mit den Richtungstasten left/right den gewünschten Toolbutton auszuwählen und auszuführen.
Wäre das möglich?
Re: QToolBar - Fokus setzen
Verfasst: Montag 20. Februar 2023, 19:12
von Axel-WAK
Du könntest beim Start den Fokus auf den ersten Button legen und dann mit den Richtungstasten left/right arbeiten.
Code: Alles auswählen
from PyQt5.QtWidgets import (QMainWindow, QApplication, QVBoxLayout, QHBoxLayout,
QWidget, QPushButton)
class MainWindow(QMainWindow):
def __init__(self, parent = None):
super(MainWindow, self).__init__(parent)
self.setupUI()
def setupUI(self):
self.setGeometry(0, 0, 800, 600)
self.setStyleSheet(mystylesheet(self))
central_widget = QWidget()
self.setCentralWidget(central_widget)
vbox = QVBoxLayout()
central_widget.setLayout(vbox)
self.tool_bar = self.addToolBar("File")
self.btn_new = QPushButton("New")
self.tool_bar.addWidget(self.btn_new)
self.btn_open = QPushButton("Open")
self.tool_bar.addWidget(self.btn_open)
self.btn_save = QPushButton("Save")
self.tool_bar.addWidget(self.btn_save)
self.btn_new.setFocus()
def mystylesheet(self):
return """
QPushButton::focus{
background-color: #99c1f1; }
"""
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = MainWindow()
win.setWindowTitle("Main Window")
win.show()
sys.exit(app.exec_())
Re: QToolBar - Fokus setzen
Verfasst: Montag 20. Februar 2023, 20:02
von Axel-WAK
Hier noch mit Shortcut (ctrl+up)
Code: Alles auswählen
from PyQt5.QtWidgets import (QMainWindow, QApplication, QVBoxLayout, QHBoxLayout,
QWidget, QPushButton, QShortcut)
from PyQt5.QtGui import QKeySequence
class MainWindow(QMainWindow):
def __init__(self, parent = None):
super(MainWindow, self).__init__(parent)
self.setupUI()
def setupUI(self):
self.setGeometry(0, 0, 800, 600)
self.setStyleSheet(mystylesheet(self))
central_widget = QWidget()
self.setCentralWidget(central_widget)
self.short_cut = QShortcut(QKeySequence('Ctrl+Up'), self)
self.short_cut.activated.connect(self.set_focus)
vbox = QVBoxLayout()
central_widget.setLayout(vbox)
self.tool_bar = self.addToolBar("File")
self.btn_new = QPushButton("New")
self.tool_bar.addWidget(self.btn_new)
self.btn_open = QPushButton("Open")
self.tool_bar.addWidget(self.btn_open)
self.btn_save = QPushButton("Save")
self.tool_bar.addWidget(self.btn_save)
self.set_focus()
def set_focus(self):
print("focus on first button")
self.btn_new.setFocus()
def mystylesheet(self):
return """
QPushButton::focus{
background-color: #99c1f1; }
"""
if __name__ == '__main__':
import sys
app = QApplication(sys.argv)
win = MainWindow()
win.setWindowTitle("Main Window")
win.show()
sys.exit(app.exec_())
Re: QToolBar - Fokus setzen
Verfasst: Dienstag 21. Februar 2023, 09:49
von Nobuddy
Hallo Axel-WAK,
Danke für Deine Codebeispiele!
Habe meine Toolbar mit QAction, statt QPushButton erstellt.
Mit QAction lässt sich das wohl nicht so umsetzen, wie in Deinem Beispiel mit QPushButton.
Werde meine Toolbar entsprechend umschreiben, dann lässt sich damit mein Vorhaben verwirklichen!
Grüße Nobuddy
Re: QToolBar - Fokus setzen
Verfasst: Mittwoch 22. Februar 2023, 14:32
von Nobuddy
Habe statt QPushButton, QToolButton verwendet.
Den Fokus per Shortcut auf Toolbar, Tabbar und Buttonbar funktioniert prima.

Re: QToolBar - Fokus setzen
Verfasst: Donnerstag 23. Februar 2023, 09:55
von Nobuddy
Habe noch eine Frage zu QFileDialog.getOpenFileName.
Hier würde ich auch gerne mit einem Shortkey, auf das Auswahlfenster für Ordner und Dateien kommen.
Wenn ich nur lange genug mit der TAB-Taste klicke, komme ich auch auf das Auswahlmenü, ist aber kontraproduktiv.
Hoffe, Ihr könnt mir da einen Tipp geben, wie ich das erreichen kann.
Grüße Nobuddy
Re: QToolBar - Fokus setzen
Verfasst: Donnerstag 23. Februar 2023, 10:57
von __deets__
Ich denke nicht, dass das geht. Das ist einfach der System-Dialog, und den malt noch nicht mal Qt. Der ist nativ. Der kann nur, was jeder andere System-Dialog kann.
Re: QToolBar - Fokus setzen
Verfasst: Donnerstag 23. Februar 2023, 12:39
von Nobuddy
Hallo __deets__,
Danke für die Info!
Habe versucht über den eventFilter versucht das Objekt ausfindig zu machen. Aber da kommt nichts, da habe ich mir dies fast gedacht.
Das lässt sich verkraften, wenn sonst alles andere über Shortkey's funktioniert.
Grüße Nobuddy
Re: QToolBar - Fokus setzen
Verfasst: Donnerstag 23. Februar 2023, 13:57
von Axel-WAK
Was ist mit Auswahlfenster/Auswahlmenü gemeint?
Wenn ich (in Linux LMDE5) den Open Dialog öffne brauche ich nur die linke Pfeiltaste zu drücken und schon bin ich auf der linken Seite.
Re: QToolBar - Fokus setzen
Verfasst: Donnerstag 23. Februar 2023, 14:06
von __deets__
Unter Linux ist das im Zweifel ein Qt-Dialog, weil es ja kein festes System-Toolkit gibt. Aber es ist halt nicht standardisiert. Wenn ich hier in Chrome unter Ubuntu C-o druecke, bringt mich Pfeil-links nirgendwohin, weil der Cursor unten in der Texteingabe fuer den Dateinamen steht.
Re: QToolBar - Fokus setzen
Verfasst: Donnerstag 23. Februar 2023, 14:20
von Axel-WAK
Bei mir ist es so das der Open Dialog in PyQt5 und python3 Gtk absolut identisch ist und sich auch identisch verhält. Eine Texteingabe für den Dateinamen gibt es beim Open Dialog nicht, nur beim Save Dialog.
Re: QToolBar - Fokus setzen
Verfasst: Donnerstag 23. Februar 2023, 15:45
von __blackjack__
@Axel-WAK: Sicher das es die Texteingabe nicht gibt? Ich kann einfach anfangen Text einzugeben. Entweder wird der Name direkt im aktuell angezeigten Ordner gesucht, oder bei Zeichen wie / oder .. verwandelt sich die ”graphische” Pfadangabe über der Liste in ein Texteingabefeld.
Re: QToolBar - Fokus setzen
Verfasst: Donnerstag 23. Februar 2023, 15:52
von Axel-WAK
Texteingabe gibt es erst wenn man anfängt zu tippen.