pyqt5 , 方法中创建控件并显示,没有反应
本帖最后由 haiyingbs 于 2022-9-21 14:01 编辑我有二个文件,一个是view.py 一个是controller.py文件
我在view.py,定义了“getnew”方法:生成新按钮控件事件。
我在controller.py,添加了一个点击按钮事件,来调用“getnew”这个方法。
但结果是,事件都触发了,就是没有显示有舞台上。有高手知道是什么原因吗?
还有就是我购买了鱼币,怎么悬赏啊?
代码如下:
#############################################
view.py:
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QWidget, QMainWindow, QPushButton, QVBoxLayout
class View(QMainWindow):
def __init__(self):
super(View, self).__init__()
self.setUI()
def setUI(self):
self.widgetWin = QWidget()
self.btn = QPushButton(self.widgetWin)
self.btn.setText('我是旧按钮')
self.layout = QVBoxLayout(self.widgetWin)
self.layout.addWidget(self.btn)
self.setCentralWidget(self.widgetWin)
def getnew(self, str):
"""添加新按钮方法"""
print('调用了getnew')
self.btn1 = QtWidgets.QPushButton(str)
self.btn1.setText('我是新按钮')
#############################################
controller.py
import view
class Controller:
def __init__(self):
# 加载ui界面类,用于设置ui
self.view = view.View()
self.view.btn.clicked.connect(lambda: self.onBtnMainClicked())
# 如果调用生成新按钮方法,放在init里就会生效
# self.view.getnew(self.view.widgetWin)
self.view.show()
def onBtnMainClicked(self):
# 使用model带的函数处理数据
print('调用了onBtnMainClicked')
# 调用创建新按钮方法没有返应
self.view.getnew(self.view.widgetWin)
#######################################
main.py
from PyQt5 import QtWidgets
import sys
import controller
if __name__ == "__main__":
app = QtWidgets.QApplication([])
ctr = controller.Controller()
app.exec_()
请问一下是什么原因 是需要那个函数吗? 不好意思入口文件忘放去了 main.py 本帖最后由 hrpzcf 于 2022-9-21 10:15 编辑
getnew里你只创建了self.btn1,并没有把放到界面上,怎么会有反应呢
view.py
from PyQt5 import QtWidgets
from PyQt5.QtWidgets import QWidget, QMainWindow, QPushButton, QVBoxLayout
class View(QMainWindow):
def __init__(self):
super(View, self).__init__()
self.setUI()
def setUI(self):
self.widgetWin = QWidget()
self.btn = QPushButton(self.widgetWin)
self.btn.setText("我是旧按钮")
self.layout1 = QVBoxLayout(self.widgetWin)
self.layout1.addWidget(self.btn)
self.setCentralWidget(self.widgetWin)
def getnew(self, str):
"""添加新按钮方法"""
print("调用了getnew")
self.btn1 = QtWidgets.QPushButton(str)
self.btn1.setText("我是新按钮")
self.layout1.addWidget(self.btn1)
本帖最后由 haiyingbs 于 2022-9-21 14:00 编辑
hrpzcf 发表于 2022-9-21 10:12
getnew里你只创建了self.btn1,并没有把放到界面上,怎么会有反应呢
view.py
self.btn1 = QtWidgets.QPushButton(str) 我这句就是靠传QWidget控件来显示的。
其实 str=self.widgetWin = QWidget()这个。不过问题找到了,靠传参事件来,放在舞台上,状态是hide,必须要show一下。
还是要谢谢你。
页:
[1]