Comment puis-je créer une application sans bordure dans Python (Windows)?
-
28-10-2019 - |
Question
Je voudrais savoir comment créer une application dans Windows qui n'a pas la bordure par défaut; en particulier la barre de titre avec minimiser, maximiser et fermer les boutons. Je pense écrire un programme de ticker qui prend un espace étroit en haut ou en bas de l'écran, mais je ne l'essayerai pas à moins qu'il ne soit possible de faire une application mince en Python. Toute aide à la terminologie est appréciée; Peut-être que je ne sais pas comment poser la bonne question dans la recherche. Tkinter a-t-il cette option? Merci
La solution
J'ai trouvé un exemple qui a répondu à ma question ici. overrideredirect(1)
est la fonction clé.
J'aime cette méthode parce que je connais TK et j'ai préféré une solution TK, mais je vois les autres réponses pour des solutions alternatives.
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()
Il suffit d'ajouter votre propre bouton de mise à mort ou de quitter la méthode.
Autres conseils
Si vous êtes prêt à utiliser Qt / Pyside, jeter un coup d'œil à QtCore.Qt.FramelessWindowHint
Le code ci-dessous prouve simplement qu'il est possible et n'essaie pas d'être terriblement utile. En particulier, vous devrez forcer à tuer l'application pour fermer l'application. Dans une implémentation appropriée, vous géreriez les événements de souris de manière personnalisée pour permettre à l'utilisateur de se déplacer et de fermer l'application. Pour exécuter ceci, vous devrez installer Pyside.
Code piraté
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_())
Essayez d'utiliser QT Designer et Python (PYQT4)
Et ce 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 est votre fichier d'interface utilisateur créé en utilisant "CMD" dans votre répertoire de projet (par CD [Space] [votre chemin ici])
Et taper ceci
pyuic4 resfile.ui -o TestUI.py
ci-dessus créera le dossier TESTUI.py sur projets
resfile.ui est le fichier que vous avez fait sur QT Designer
J'espère que cela t'aides.