0

だから私は、複数のインポートされたファイルでポップアップを動作させることに取り組んでおり、多くの回答に出くわし、それらはすべて同じ形式です( Python (PyQt4) でポップアップウィンドウを表示するを参照)

彼らはこれを使用します(要約):

class MyForm(QtGui.QDialog):
    def __init__(self, parent=None):
        QtGui.QDialog.__init__(self, parent)

        # Usual setup stuff
        self.ui = Ui_Dialog()
        self.ui.setupUi(self)
if __name__ == "__main__":
   app = QtGui.QApplication(sys.argv)
   myapp= MyForm()
   myapp.show()
   sys.exit(app.exec_())

myapp がここで行っているように、ポップアップを開くにはそれへの参照を保持する必要があるため、これは非常に重要です。

QTDesigner では、if (__name__ == '__main__')

app = QtGui.QApplication(sys.argv)
m = Ui_Frame()
Frame = QtGui.QWidget()
m.setupUi(Frame)
Frame.show()

実際のクラス/UI の設定は次のようになります。

class Ui_Frame(object):

    def setupUi(self, Frame):

2 つをマージしようとしましたが、setupUi が実行されていないように空白のポップアップ ウィンドウが表示されます。私のコード:

編集:ウィンドウが消える問題のある新しいコード:

インポートされたファイル.py

from PyQt4 import QtCore, QtGui
try:
    _fromUtf8 = QtCore.QString.fromUtf8
except AttributeError:
    _fromUtf8 = lambda s: s

class Ui_Frame(QtGui.QWidget):
def __init__(self, xlist, y, parent=None):
    QtGui.QWidget.__init__(self, parent)
    self.setupUi(xlist,y)

def setupUi(self, xlist, y):
    self.setObjectName(_fromUtf8("Frame"))
    self.resize(800, 400)
    self.tableWidget = QtGui.QTableWidget(self)
    ...

def startup(xlist, y):
     myapp= Ui_Frame(xlist, y)
     myapp.show()

if __name__ == "__main__":
     app = QtGui.QApplication(sys.argv)
     myapp= Ui_Frame()
     myapp.show()
     sys.exit(app.exec_())

other.py は単純です:

import importedfile
#app = QtGui.QApplication(sys.argv) and sys.exit are somewhere up here for the other       frame
...code...
tempholder = importedfile.startup(xlist,y)
#Using a var for the startup() or not using has the same results

明らかに単純なものが欠けています。setupUi は実際に実行されており、その中のすべてが印刷などされていますが、メイン ウィンドウには何も表示されず、空白のフレームだけです。

4

1 に答える 1

1

あなたUi_Frameはウィジェットなので、別の は必要ありませんFrame:

class Ui_Frame(QtGui.QWidget):
    def __init__(self, parent=None):
        # Here, you should call the inherited class' init, which is QDialog
        QtGui.QWidget.__init__(self, parent)
        xlist = [1,2,3]
        y = "Default"
        self.setupUi(xlist,y)

    def setupUi(self, xlist, y):
        self.setObjectName(_fromUtf8("Frame"))
        self.resize(800, 400)
        self.tableWidget = QtGui.QTableWidget(self)
        ...
于 2012-11-29T08:50:13.797 に答える