Pergunta

Gostaria de saber como criar uma aplicação no Windows que não tenha a borda padrão;particularmente a barra de título com os botões minimizar, maximizar e fechar. Estou pensando em escrever um programa de ticker que ocupa um espaço estreito na parte superior ou inferior da tela, mas não tentarei, a menos que seja possível fazer um aplicativo fino em Python.Qualquer ajuda com a terminologia é apreciada;talvez eu não saiba fazer a pergunta certa na pesquisa.O Tkinter tem essa opção? Obrigado

Foi útil?

Solução

Encontrei um exemplo que respondeu à minha pergunta aqui .overrideredirect(1) é a função principal.

Gosto desse método porque estou familiarizado com o Tk e preferi uma solução Tk, mas veja as outras respostas para soluções alternativas.

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

Só precisa adicionar seu próprio botão de matar ou método de sair.

Outras dicas

Se você deseja usar Qt / PySide , dê uma olhada em QtCore.Qt.FramelessWindowHint O código abaixo apenas prova que é possível e não tenta ser muito útil.Em particular, você terá que forçar o encerramento do aplicativo para que ele seja fechado.Em uma implementação adequada, você trataria os eventos do mouse de uma forma personalizada para permitir que o usuário mova e feche o aplicativo.Para executá-lo, você precisará instalar o PySide .

Código hackeado

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

Tente usar QT Designer e Python (PyQT4)

e este código

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 é o seu arquivo de IU Criado usando "cmd" indo para o diretório do projeto (por cd [espaço] [seu caminho aqui])

e digitando isso

pyuic4 resfile.ui -o TestUI.py

acima criará o TestUI.py na pasta de projetos

resfile.ui é o arquivo que você criou no QT Designer

Espero que isso ajude.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top