Seite 1 von 1
Canvas auf gesamtem Bildschirm erzeugen
Verfasst: Donnerstag 8. November 2018, 00:33
von Atalanttore
Hallo
Ich bin gerade dabei eines meiner
Beispielprogramme mit Tkinter-Oberfläche nach PyQt5 zu portieren.
In jenem Beispiel wird mit folgender Anweisung ein Canvas auf dem gesamten Bildschirm erzeugt.
Code: Alles auswählen
self.game_window.attributes("-fullscreen", True)
self.canvas = Canvas(self.game_window,
width=self.game_window.winfo_screenwidth(),
height=self.game_window.winfo_screenheight(),
highlightthickness=0)
Bisher habe ich leider nicht herausgefunden, welche Methoden und Parameter bei PyQt5 für das gleiche Verhalten notwendig sind. Weiß das jemand?
Gruß
Atalanttore
Re: Canvas auf gesamtem Bildschirm erzeugen
Verfasst: Freitag 9. November 2018, 15:16
von __blackjack__
@Atalanttore: Also ich habe mal was ganz abgefahrenes und sehr um die Ecke gedachtest gemacht und nach dem Wort „fullscreen“ in der Qt-Dokumentation gesucht und habe doch tatsächlich herausgefunden, dass `QWidget` ein Property mit dem Namen `fullScreen` hat:
http://doc.qt.io/qt-5/qwidget.html#fullScreen-prop
Re: Canvas auf gesamtem Bildschirm erzeugen
Verfasst: Freitag 9. November 2018, 16:08
von Atalanttore
@__blackjack__: Krasse Aktion. Ich habe die Doku von PyQt5 nach dem Wort „fullscreen“ abgesucht, aber nichts gefunden.
Dem Property `fullScreen` einfach ein `True` zuweisen hat nicht funktioniert. Eine Fehlermeldung kam aber auch keine keine. Warum ist das so?
Stattdessen schaltet bei mir die Methode `showFullScreen()` in den gewünschten Vollbildmodus ohne Titelleiste, Taskleiste, usw. um.
Mein Beispielcode sieht folgendermaßen aus:
Code: Alles auswählen
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow
class FullScreenWindow(QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.showFullScreen()
if __name__ == "__main__":
app = QApplication(sys.argv)
full_screen_window = FullScreenWindow()
full_screen_window.show()
sys.exit(app.exec_())
Ist mein funktionierendes Codebeispiel auch für einen alten Pythonhasen in Ordnung oder enthält es Macken?
Gruß
Atalanttore
Re: Canvas auf gesamtem Bildschirm erzeugen
Verfasst: Freitag 9. November 2018, 16:22
von __deets__
Die PyQt Dokumentation hat nicht den Anspruch, alle Hunderten oder tausenden qt Klassen zu dokumentieren. Du musst dir die C++-Doku anschauen.
Und PyQt macht das verpackte C++ auch nicht zu Python. Damit ist das aller Wahrscheinlichkeit nach kein property (sowas kennt C++ nicht) sondern eine Methode.
Re: Canvas auf gesamtem Bildschirm erzeugen
Verfasst: Freitag 9. November 2018, 16:39
von __blackjack__
Jo, hätte ich wohl dazu schreiben sollen das mit „Property“ in meinem Beitrag die Qt-Terminologie gemeint war und kein Python `property()`. Properties bei Qt sind durch Methoden gekapselte Attribute (also potentiell berechnete Attribute, wie bei Python's `property()`) und da ist in der Dokumentation ja auch nur eine Methode für die Abfrage gelistet. Und bei „see also“ dann das (Qt-)Property `windowState` das auch eine Setter-Methode hat und den Wert Qt::WindowFullScreen kennt.
In der Dokumentation zu `showFullscreen()` ist auch eine Warnung was die Wirkung auf verschiedenen Plattformen angeht.
Re: Canvas auf gesamtem Bildschirm erzeugen
Verfasst: Samstag 10. November 2018, 17:43
von Atalanttore
@__blackjack__:
Bei meinem Ubuntu mit Gnome 3 und X.org (nicht Wayland) funktionierte `showFullscreen()` bisher problemlos.
Gruß
Atalanttore