如何在Python(windows)中创建无边框应用程序?

use*_*811 7 python borderless

我想知道如何在Windows中创建一个没有默认边框的应用程序; 特别是带有最小化,最大化和关闭按钮的标题栏.我正在考虑编写一个在屏幕顶部或底部占据狭窄空间的自动收报机程序,但除非可以在Python中创建一个瘦应用程序,否则我不会尝试它.任何有关术语的帮助都表示赞赏; 也许我不知道如何在搜索中提出正确的问题.Tkinter有这个选项吗?谢谢

use*_*811 10

我在这里找到了一个回答我问题的例子.overrideredirect(1)是关键功能.

我喜欢这种方法,因为我熟悉Tk并且更喜欢Tk解决方案,但请参阅替代解决方案的其他答案.

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()
Run Code Online (Sandbox Code Playgroud)

只需要添加自己的kill按钮或退出方法.


gfo*_*une 8

如果您愿意使用Qt/PySide,请查看QtCore.Qt.FramelessWindowHint 下面的代码,证明它是可能的,并且不会尝试非常有用.特别是,您必须强制终止应用程序以关闭应用程序.在正确的实现中,您将以自定义方式处理鼠标事件,以允许用户移动和关闭应用程序.要运行它,您需要安装PySide.

黑客代码

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_())
Run Code Online (Sandbox Code Playgroud)