2011-12-08 11 views
2

下記の最小限の例を考えてみましょう。これらの行は、コメントを解除している場合、私はLINEEDIT-フィールドにテキストを書くことができますが、ボタンが反応しないmpylayer、PyQt4、lineEdit

# self.mainwi = QtGui.QWidget(self) 
# self.lineEdit1 = QtGui.QLineEdit(self.mainwi) 
# self.setCentralWidget(self.lineEdit1) 

:私は次の行のコメントを解除するまで、それは完璧に動作します。どんな考えが間違っているか、どのようにこれを修正するか?

私はPythonプログラミングの初心者です。

#!/usr/bin/python 

import mpylayer 
import sys 
from PyQt4 import QtCore 
from PyQt4 import QtGui 



class DmplayerGUI(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     QtGui.QWidget.__init__(self, parent) 
     self.dirty = False 
     self.mp = mpylayer.MPlayerControl() 
     #Toolbar 
     ## items 

     ### Play 
     self.play = QtGui.QAction(QtGui.QIcon('icons/play_32.png'), 'Play', self) 
     self.play.setShortcut('Ctrl+A') 
     self.connect(self.play, QtCore.SIGNAL('triggered()'), self.DPlay) 

     ### Pause 
     self.pause = QtGui.QAction(QtGui.QIcon('icons/pause_32.png'), 'Pause', self) 
     self.pause.setShortcut('Ctrl+P') 
     self.connect(self.pause, QtCore.SIGNAL('triggered()'), self.DPause) 


     ## toolbar 
     self.toolbar = self.addToolBar('Toolbar') 
     self.toolbar.addAction(self.play) 
     self.toolbar.addAction(self.pause) 

     # self.mainwi = QtGui.QWidget(self) 
     # self.lineEdit1 = QtGui.QLineEdit(self.mainwi) 
     # self.setCentralWidget(self.lineEdit1) 

    # play 
    def DPlay(self): 
     self.mp.loadfile('video.mp4') 

    # pause 
    def DPause(self): 
     self.mp.pause(self) 


if __name__ == "__main__": 
    app = QtGui.QApplication(sys.argv) 
    dp = DmplayerGUI() 
    dp.show() 
    sys.exit(app.exec_()) 
+2

あなたの中央ウィジェットに 'self.mainwi'を設定してみませんか? –

+1

@ dex19dtこれは絶対的な初心者の間違いだと思う:-) – student

答えて

2

この簡単な例では、mainwiはまったく必要ありません。ちょうどあなたが本当にそれを望んでいた場合には

self.lineEdit1 = QtGui.QLineEdit(self) 
self.setCentralWidget(self.lineEdit1) 

を行い、その後はcentralwidgetとしてmainwiを設定する必要が

self.mainwi = QtGui.QWidget(self) 
self.lineEdit1 = QtGui.QLineEdit(self.mainwi) 
self.setCentralWidget(self.mainwi) 

これは醜い:-)に見えることから、mainwiためのいくつかのレイアウトを追加することを忘れないでください

とにかく、ボタンを「無効にする」のはなぜか分かりません。しかし、中央のウィジェットは私が知る限り窓の子供でなければならない。

+0

ありがとう!それがボタンを無効にする理由を知ることは興味深いでしょうが、それを正しく行う方法を知っていれば十分です。 – student