我的应用程序结构有点复杂。
First_Main_Window(QtWidgets.QMainWindow)
来电---> Second_Main_Window(QtWidgets.QMainWindow)
来电--->
Third_Window = slides_form (QtWidgets.QDialog)
这意味着在第一个窗口中我有工人列表,在第二个窗口中 - 第三个窗口中的某个工人(电话,地址)的数据 - 工人的标准工作阶段(即照片)..
' First_Main_Window'使用此功能打开Second_Main_Window
:
def OpenWindowCurrentWorker(self):
self.pasportdataWin = pasportdata.pasportdata_form(self)
self.pasportdataWin.closed.connect(self.show)
self.pasportdataWin.move(0,0)
self.hide()
self.pasportdataWin.show()
Second_Main_Window
使用此功能打开Third_Window
:
def OpenSlidesWindowForm(self):
self.SlidesWin=slides.slides_form(self)
self.SlidesWin.move(0,0)
self.SlidesWin.closed.connect(self.show)
self.hide()
self.SlidesWin.show()
from PyQt5 import QtCore, QtWidgets, QtGui
class slides_form (QtWidgets.QDialog):
closed = QtCore.pyqtSignal()
def __init__(self,parent=None):
super(slides_form, self).__init__(parent)
self.ui = slidesUiForm.Ui_Form()
self.ui.setupUi(self)
self.Parent=parent
self.ui.pushButton.clicked.connect(self.openNewSlideFile)
@QtCore.pyqtSlot()
def openNewSlideFile (self):
Slideflnames = QtWidgets.QFileDialog.getOpenFileNames(self, "Open Image file", "All images(*.png *.gif *.jpg *jpeg *.bmp *.tiff .tif)")[0]
for ii in range(len(Slideflnames)):
........
shutil.copy(os.path.abspath(Slideflnames[ii]), NEWPATH)
问题在于我决定从 PyQt4 转移到 PyQt5 。
问题是在调用程序"openNewSlideFile"
之后
申请结束时没有任何警告。
从第二个和第三个窗口调用QtWidgets.QFileDialog.getOpenFileNames
即可完成应用程序。
我尝试使用"无"而不是" self"在父母的位置,但它没有帮助。
请帮助我,我不是一个非常强大的程序员,也不了解这个问题,特别是当所有人都在使用PyQt4时。
我可以理解PyQt 5,9: Here is information about PyQt5 from Synaptics
这是控制台输出,使用纯python3和python3 -m pdb
当我通过Python3启动时 - 它完成时没有显示错误
当我通过python3启动它时 - m pdb - 它完成了分段错误
[alex@comp projects_PyQt5]$ python3
Python 3.5.1 (default, May 5 2016, 10:50:17)
[GCC 5.3.1 20151207 (ALT Linux 5.3.1-alt3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
[1]+ Stopped python3
[alex@comp projects_PyQt5]$ python3 BaseCenter.py
[alex@comp projects_PyQt5]$ python3 -m pdb BaseCenter.py
> /home/alex/projects_PyQt5/BaseCenter.py(3)<module>()
-> import os
(Pdb) continue
QXcbConnection: XCB error: 3 (BadWindow), sequence: 2466, resource id: 39846744, major code: 40 (TranslateCoords), minor code: 0
The program exited via sys.exit(). Exit status: 0
> /home/alex/projects_PyQt5/BaseCenter.py(3)<module>()
-> import os
(Pdb) continue
Segmentation error
[alex@comp projects_PyQt5]$
我找到了一些问题的答案 - 在我的情况下,每个打开的孩子都会#34;窗口隐藏了之前的父窗口&#34;初始化时显示&#34; parent&#34;关闭时返回 - 为了最小化桌面状态字符串中小部件的数量
如果我在呼叫&#34;第二个窗口&#34;时删除了self.hide()一切正常!但!我在状态字符串中有两个窗口选项卡(我忘了英文单词来描述它:)) 一个窗口处于非活动状态,因为活动窗口是模态的...但它看起来像是一些不必要的垃圾而烦我:))