mpylayer, PyQt4 и lineEdit - PullRequest
       15

mpylayer, PyQt4 и lineEdit

2 голосов
/ 08 декабря 2011

Рассмотрим минимальный пример ниже. Это работает отлично, пока я не раскомментирую следующие строки:

# 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_())

1 Ответ

2 голосов
/ 09 декабря 2011

Вам не нужен 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, так какнекрасиво: -)

В любом случае, я должен признать, что я не знаю, почему именно он "отключает" кнопки.Насколько я знаю, центральный виджет должен быть дочерним элементом окна.

...