Como posso criar um aplicativo sem borda em Python (windows)?
-
28-10-2019 - |
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
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.