如何在Python(Windows)中创建一个无边框的应用程序?

8

我想知道如何在Windows中创建无默认边框的应用程序,特别是标题栏,包括最小化、最大化和关闭按钮。

我正在考虑编写一个滚动条程序,它占据屏幕顶部或底部的狭窄空间,但除非可以在Python中创建一个细长的应用程序,否则我不会尝试它。感谢术语方面的帮助;也许我不知道如何搜索正确的问题。Tkinter有这个选项吗?

谢谢


你可以研究一下WX模块。 - trevorKirkby
3个回答

11

我在这里找到了一个回答我的问题的例子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()

只需要添加您自己的关闭按钮或退出方法。


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

谢谢回复。我过去只使用过Tkinter,并找到了一个使用Tk回答我的问题的示例,但我会阅读有关Qt和PySide的资料并安装它。 - user6811
请随意采用您在问题中提供的答案,将其作为答案添加并接受它作为答案,因为它最符合您的要求。 - gfortune
感谢您提供简明易懂的示例 - 简单易行。 - synthesizerpatel

2
尝试使用QT Designer和Python(PyQT4)进行编程。以下是相关代码:
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是您的UI文件,通过使用“cmd”进入项目目录(通过cd[空格][您的路径]),然后键入以下内容创建:

pyuic4 resfile.ui -o TestUI.py

以上操作将在项目文件夹中创建TestUI.py。

resfile.ui是您在QT Designer上创建的文件。

希望这能帮到您。


谢谢回复。我到目前为止只使用过Tkinter。 Qt是否比Tk更好? - user6811
这取决于你的需求。对于我而言,QT和PyQT4在我的程序中给了我所有我需要的灵活性,并且适合我当前的编程水平。 - Katherina

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接