Frage

Ich möchte wissen, wie eine Anwendung in Windows erstellt wird, die nicht den Standardrahmen hat.insbesondere die Titelleiste mit Schaltflächen zum Minimieren, Maximieren und Schließen. Ich denke darüber nach, ein Ticker-Programm zu schreiben, das oben oder unten auf dem Bildschirm einen engen Platz einnimmt, aber ich werde es nicht versuchen, es sei denn, es ist möglich, eine dünne Anwendung in Python zu erstellen.Jede Hilfe bei der Terminologie wird geschätzt;Vielleicht weiß ich nicht, wie ich bei der Suche die richtige Frage stellen soll.Hat Tkinter diese Option? Danke

War es hilfreich?

Lösung

Ich habe hier ein Beispiel gefunden, das meine Frage beantwortet hat.overrideredirect(1) ist die Schlüsselfunktion.

Ich mag diese Methode, weil ich mit Tk vertraut bin und eine Tk-Lösung bevorzugt habe, aber die anderen Antworten für alternative Lösungen finden.

import tkMessageBox
from Tkinter import *

class App():
    def __init__(self):
        self.root = Tk()
        self.root.overrideredirect(1)
        self.frame = Frame(self.root, width=320, height=200,
                           borderwidth=2, relief=RAISED)
        self.frame.pack_propagate(False)
        self.frame.pack()
        self.bQuit = Button(self.frame, text="Quit",
                            command=self.root.quit)
        self.bQuit.pack(pady=20)
        self.bHello = Button(self.frame, text="Hello",
                             command=self.hello)
        self.bHello.pack(pady=20)

    def hello(self):
        tkMessageBox.showinfo("Popup", "Hello!")

app = App()
app.root.mainloop()

Sie müssen nur Ihre eigene Kill-Schaltfläche hinzufügen oder die Methode beenden.

Andere Tipps

Wenn Sie bereit sind, Qt / PySide zu verwenden, werfen Sie einen Blick auf QtCore.Qt.FramelessWindowHint Der folgende Code beweist nur, dass es möglich ist und versucht nicht, schrecklich nützlich zu sein.Insbesondere müssen Sie das Beenden der App erzwingen, damit die App geschlossen wird.In einer ordnungsgemäßen Implementierung würden Sie Mausereignisse auf benutzerdefinierte Weise behandeln, damit der Benutzer die Anwendung verschieben und schließen kann.Um dies auszuführen, müssen Sie PySide installieren.

Code gehackt
import sys

from PySide import QtGui, QtCore

app = QtGui.QApplication(sys.argv)  
MainWindow = QtGui.QMainWindow(parent=None, flags=QtCore.Qt.FramelessWindowHint)

MainFrame = QtGui.QFrame(MainWindow)
MainWindow.setCentralWidget(MainFrame)
MainFrameLayout = QtGui.QVBoxLayout(MainFrame)

label = QtGui.QLabel('A Label')
MainFrameLayout.addWidget(label)

MainWindow.show()
sys.exit(app.exec_())

Versuchen Sie es mit QT Designer und Python (PyQT4)

und dieser Code

from TestUI import Ui_MainWindow
class testQT4(QtGui.QMainWindow):

    def __init__(self, parent=None):    

        super(testQT4, self).__init__(parent,Qt.CustomizeWindowHint)
        self.ui = Ui_MainWindow()

if __name__ == "__main__":
    app = QtGui.QApplication(sys.argv)
    myapp = testQT4()
    myapp.show()

    sys.exit(app.exec_())

TestUI ist Ihre UI-Datei Erstellt mit "cmd" in Ihrem Projektverzeichnis (von cd [Leerzeichen] [Ihr Pfad hier])

und geben Sie dies ein

pyuic4 resfile.ui -o TestUI.py

oben erstellt die Datei TestUI.py im Projektordner

resfile.ui ist die Datei, die Sie in QT Designer erstellt haben

Hoffe das hilft.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top