Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的文件窗口会立即打开?_Python_Pyqt5 - Fatal编程技术网

Python 为什么我的文件窗口会立即打开?

Python 为什么我的文件窗口会立即打开?,python,pyqt5,Python,Pyqt5,这可能很容易,但我刚刚开始学习python,所以请耐心听我说。下面的类应该生成我想要的表单字段: 导入PyQt5 从PyQt5导入QtWidgets、QtCore 从PyQt5.qtwidts导入QFormLayout、QLabel、QFileDialog、QPushButton def创建文件窗口: 需要打印文件对话框 文件名,\=QtWidgets.QFileDialog.getOpenFileNameNone,'Select Image','Image Files*.png*.jpg' “

这可能很容易,但我刚刚开始学习python,所以请耐心听我说。下面的类应该生成我想要的表单字段:

导入PyQt5 从PyQt5导入QtWidgets、QtCore 从PyQt5.qtwidts导入QFormLayout、QLabel、QFileDialog、QPushButton def创建文件窗口: 需要打印文件对话框 文件名,\=QtWidgets.QFileDialog.getOpenFileNameNone,'Select Image','Image Files*.png*.jpg' “*.jpeg*.bmp” 如果文件名为: 打印文件名 类CreateFormElementsQtWidgets.QWidget: 定义初始自我,*args,**kwargs: superCreateFormElements,self.\u init\u*args,**kwargs 定义创建表格行自身、标签、字段类型、*args、**kwargs: 布局=QFormLayout layout.addRowQLabellabel,字段类型 self.setLayoutlayout 这个参数将告诉我是否需要一个按钮,以及该按钮是否应该打开一个文件窗口 connectType=kwargs。获取“connectType”,无 _fieldType=kwargs。获取“U fieldType”,无 如果这是一个应该打开文件窗口的按钮,请调用create_file_window函数来创建一个 文件窗口。当前没有可见的按钮,文件窗口将直接打开。 如果connectType='file'和_fieldType=='button': 打印字段类型 fieldType.SetTextLoad新映像 打印“生成文件” fieldType.clicked.connectcreate\u文件\u窗口 问题是,“文件”窗口并不等待按钮可见,而是在我运行主窗口时立即打开。主窗口的代码如下所示:

导入系统 从PyQt5导入QtWidgets 从PyQt5.qtwidts导入QApplication、QLabel、QMainWindow、QWidget、QVBoxLayout、QLineEdit、QFormLayout、\ QFileDialog,QPushButton 从lib.create\u form\u元素导入CreateFormElements 看法 子类QMainWindow可自定义应用程序的主窗口 类MainWindowQMainWindow: 定义初始自我,*args,**kwargs: 超级主窗口,self.\uuuu init\uuu*args,**kwargs self.myWindow def myWindowself: self.setWindowTitleMy真棒应用程序 sizeObject=QtWidgets.QDesktopWidget.screenGeometry-1 打印屏幕大小:+strizeobject.height+x+strizeobject.width 自宽=600 自身高度=480 self.left=0 self.top=0 self.setGeometryself.left、self.top、self.width、self.height 布局=QVBoxLayout elm=CreateFormElements elm.create_form_rowObject Name:,QPushButton,connectType='file',_fieldType='button' layout.addWidgetelm widget=QWidget widget.setLayoutlayout self.setCentralWidgetwidget app=QApplicationsys.argv 窗口=主窗口 橱窗秀 app.exec_ 我做错了什么?如何让它在打开文件窗口之前等待按钮单击? 提前谢谢你的帮助

这会立即创建文件窗口,因为调用了create_file_window。您需要将函数传递给单击的。连接。。。不用说:

fieldType.clicked.connect(create_file_window)
然后在触发单击的事件时调用它

这会立即创建文件窗口,因为调用了create_file_window。您需要将函数传递给单击的。连接。。。不用说:

fieldType.clicked.connect(create_file_window)

触发单击的事件后,将调用它。

尝试使用fieldType.clicked.connectcreate\u file\u窗口,CreateFormElements.create\u form\u行中不带括号。信号应该连接到可调用项,当信号被触发时,可调用项将被调用!你能再解释一下最后一行吗?我不确定是否理解。请尝试使用fieldType.clicked.connectcreate\u file\u窗口,CreateFormElements.create\u form\u行中不带括号。信号应该连接到可调用项,当信号被触发时,可调用项将被调用!你能再解释一下最后一行吗?我不确定我是否明白。我知道我错过了一些简单的东西!谢谢虽然海克先写了答案,但他的答案是评论,所以我接受你的答案。我知道我遗漏了一些简单的东西!谢谢虽然海克先写了答案,但他的答案是评论,所以我接受你的答案。