【问题标题】:PyQt Creates Seperate Window For ButtonPyQt 为按钮创建单独的窗口
【发布时间】:2019-10-02 07:26:30
【问题描述】:

您好,最近我开始尝试使用 PyQt5 GUI 库,因为 Tkinter 看起来不太现代或漂亮。我正在尝试创建一个非常简单的窗口,上面有一个按钮,但由于某种原因,它会为该按钮打开一个新窗口。我该如何解决这个问题?代码如下:

from PyQt5 import QtWidgets

app = QtWidgets.QApplication([])

window = QtWidgets.QWidget()
window.setGeometry(0, 0, 500, 300)
window.setWindowTitle("UI")
window.show()


btn = QtWidgets.QPushButton("Test")
btn.resize(100,100)
btn.move(100,100)
btn.show()


(app.exec_())

我知道我应该为 GUI 使用类,但我想在开始之前学习基础知识。

【问题讨论】:

    标签: python pyqt pyqt5


    【解决方案1】:

    对于像 QPushButton 这样的小部件要成为窗口的一部分,必须实现该小部件:

    1. 是窗口的子级或
    2. 成为窗外某个孩子的孩子或
    3. 它是属于窗口的布局的一部分。

    在您的情况下,QPushButton 不符合其中任何一个,因此它将是一个新窗口。因此可以使用 1 或 3 规则解决:

    import sys
    from PyQt5 import QtWidgets
    
    if __name__ == '__main__':
    
        app = QtWidgets.QApplication(sys.argv)
    
        window = QtWidgets.QWidget()
        window.setGeometry(0, 0, 500, 300)
        window.setWindowTitle("UI")
    
        btn = QtWidgets.QPushButton("Test", window)
        btn.resize(100,100)
        btn.move(100,100)
    
        window.show()
    
        sys.exit(app.exec_())
    

    或者:

    import sys
    from PyQt5 import QtWidgets
    
    if __name__ == '__main__':
    
        app = QtWidgets.QApplication(sys.argv)
    
        window = QtWidgets.QWidget()
        window.setGeometry(0, 0, 500, 300)
        window.setWindowTitle("UI")
    
        btn = QtWidgets.QPushButton("Test")
    
        lay = QtWidgets.QHBoxLayout(window)
        lay.addWidget(btn)
        window.show()
    
        sys.exit(app.exec_())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 2014-02-19
      • 2016-06-12
      • 2022-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多