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

Смежные вопросы