gpt4 book ai didi

python - QPushButton 添加到布局时不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:33 25 4
gpt4 key购买 nike

我有一个 QWidget(它被设置为一个名为 Ui_Form 的 UI),我希望它成为 QFrame 的一部分,而 QFrame 已经是我的 QMainWindow 的一部分;这个 QWidget 是一个带有按钮和其他对象的 UI 表单。我尝试将其添加为框架布局的一部分,但问题是当我将 QWidget 添加到布局中时,Ui_Form 中的 QPushButton 停止工作,我的代码如下。

## My QMainWindow
from PyQt5 import QtCore, QtGui, QtWidgets

class MainWindow(object):
def setupUi(self, mainWindow):
# pyuic5 code here ...
self.MyFrame = QtWidgets.QFrame(self.centralwidget)
self.MyFrame.setGeometry(QtCore.QRect(0, 560, 1201, 201))
self.MyFrame.setFrameShape(QtWidgets.QFrame.StyledPanel)
self.MyFrame.setFrameShadow(QtWidgets.QFrame.Raised)
# more pyuic5 code here ...

my_form = QtWidgets.QWidget()
my_form_ui = Ui_Form()
my_form_ui.setupUi(my_form)
frame_layout = QtWidgets.QVBoxLayout()
frame_layout.addWidget(my_form)
self.MyFrame.setLayout(frame_layout)

我的 Ui_Form 类,在将其添加到布局之前曾经起作用

## My Ui_Form class
from PyQt5 import QtCore, QtGui, QtWidgets

class Ui_Form(object):
def setupUi(self, form):
# some pyuic5 code here ...
self.myPushButton = QtWidgets.QPushButton(form)
self.myPushButton.setGeometry(QtCore.QRect(415, 200, 101, 40))
self.myPushButton.setObjectName("myPushButton")
self.myPushButton.clicked.connect(self.printHello)

def printHello(self):
print("Hello World!")

MainWindow 将很好地显示 Ui_Form 中的所有元素,但按钮不能工作,尽管我调用 setupUi 方法将按钮连接到 printHello 方法。有任何想法吗?

最佳答案

说明:

问题是 my_form_ui 是一个局部变量,当您完成执行 setupUi() 方法时,该变量将被消除,因此 printHello()方法将不再存在。使用QPushButton就不会产生这个问题,因为所有权是GUI。

解决方案:

my_form_ui 设置为该类的属性:

# ...
my_form = QtWidgets.QWidget()
<b>self.my_form_ui = Ui_Form()
self.my_form_ui.setupUi(my_form)</b>
frame_layout = QtWidgets.QVBoxLayout()
# ...

关于python - QPushButton 添加到布局时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58298525/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com