2011-12-08 71 views
2

考慮下面的最小例子。它完美,直到我去掉下面幾行:mpylayer,PyQt4和lineEdit

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

如果這些線是未加註釋,我可以寫在LineEdit場的文本,但按鈕沒有反應。任何想法它有什麼問題,如何解決這個問題?

我應該補充一點,我是編程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) 

在你真的想它時,那麼你需要設置mainwi爲centralwidget

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

不要忘記添加一些佈局mainwi,因爲這看起來醜陋:-)

無論如何,我不得不承認,我不知道爲什麼它「禁用」按鈕。但據我所知,中心部件必須是窗戶的小孩。

+0

謝謝!雖然知道它爲什麼會禁用按鈕會很有趣,但足以讓我知道如何正確執行它。 – student