2011-12-08 28 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