How can I create a borderless application in Python (windows)?

后端 未结 3 1163
無奈伤痛
無奈伤痛 2020-12-16 03:49

I would like to know how to create an application in Windows that does not have the default border; particularly the title bar with minimize, maximize, and close buttons. I\

相关标签:
3条回答
  • 2020-12-16 03:50

    If you're willing to use Qt/PySide, take a look at QtCore.Qt.FramelessWindowHint The code below just proves it's possible and doesn't try to be terribly useful. In particular, you will have to force kill the app to get the app to close. In a proper implementation, you would handle mouse events in a custom way to allow the user to move and close the application. To run this, you will need to install PySide.

    Hacked up Code

    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_())
    
    0 讨论(0)
  • 2020-12-16 04:15

    Try Using QT Designer and Python (PyQT4)

    and this code

    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 is your UI file Created by using "cmd" going into your project directory (by cd[space][your path here])

    and typing this

    pyuic4 resfile.ui -o TestUI.py
    

    above will create the TestUI.py on projects folder

    resfile.ui is the file that you made on QT Designer

    Hope this helps.

    0 讨论(0)
  • 2020-12-16 04:17

    I found an example that answered my question here. overrideredirect(1) is the key function.

    I like this method because I'm familiar with Tk and preferred a Tk solution, but see the other answers for alternate solutions.

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

    Just need to add your own kill button or quit method.

    0 讨论(0)
提交回复
热议问题