Domanda

Vorrei sapere come creare un'applicazione in Windows che non ha il bordo predefinito;in particolare la barra del titolo con i pulsanti di riduzione, ingrandimento e chiusura. Sto pensando di scrivere un programma ticker che occupi uno spazio stretto nella parte superiore o inferiore dello schermo, ma non lo proverò a meno che non sia possibile creare un'applicazione sottile in Python.Qualsiasi aiuto con la terminologia è apprezzato;forse non so come fare la domanda giusta nella ricerca.Tkinter ha questa opzione? Grazie

È stato utile?

Soluzione

Ho trovato un esempio che ha risposto alla mia domanda qui .overrideredirect(1) è la funzione chiave.

Mi piace questo metodo perché ho familiarità con Tk e preferisco una soluzione Tk, ma vedi le altre risposte per soluzioni alternative.

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()

Devi solo aggiungere il tuo pulsante di uccisione o uscire dal metodo.

Altri suggerimenti

Se sei disposto a utilizzare Qt / PySide , dai un'occhiata a QtCore.Qt.FramelessWindowHint Il codice qui sotto dimostra che è possibile e non cerca di essere molto utile.In particolare, dovrai forzare l'uccisione dell'app per chiuderla.In una corretta implementazione, gestiresti gli eventi del mouse in modo personalizzato per consentire all'utente di spostare e chiudere l'applicazione.Per eseguirlo, dovrai installare PySide .

Codice compromesso

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_())

Prova a utilizzare QT Designer e Python (PyQT4)

e questo codice

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 è il file dell'interfaccia utente Creato utilizzando "cmd" nella directory del progetto (da cd [spazio] [il tuo percorso qui])

e digitando questo

pyuic4 resfile.ui -o TestUI.py

sopra creerà il TestUI.py nella cartella dei progetti

resfile.ui è il file che hai creato su QT Designer

Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top