2014-02-05 29 views
0

我已经创建了文本编辑程序,并且我想添加其他功能,例如按钮。我需要将它嵌入到小部件中(像文本编辑器是gui的面板,按钮也像面板)对于java引用感到抱歉,不知道它们在pyqt4中被称为什么,但我不知道如何使用PQT4和Python 3.x来做到这一点。 我要实现以下目标:! [请在此输入图像说明] [1]将文本编辑器嵌入到小部件中

这里是我的文本编辑器

#! /usr/bin/python 

import sys 
import os 
from PyQt4 import QtGui 

class Notepad(QtGui.QMainWindow): 

    def __init__(self): 
     super(Notepad, self).__init__() 
     self.initUI() 

    def initUI(self): 



     newAction = QtGui.QAction('New', self) 
     newAction.setShortcut('Ctrl+N') 
     newAction.setStatusTip('Create new file') 
     newAction.triggered.connect(self.newFile) 

     saveAction = QtGui.QAction('Save', self) 
     saveAction.setShortcut('Ctrl+S') 
     saveAction.setStatusTip('Save current file') 
     saveAction.triggered.connect(self.saveFile) 

     openAction = QtGui.QAction('Open', self) 
     openAction.setShortcut('Ctrl+O') 
     openAction.setStatusTip('Open a file') 
     openAction.triggered.connect(self.openFile) 

     closeAction = QtGui.QAction('Close', self) 
     closeAction.setShortcut('Ctrl+Q') 
     closeAction.setStatusTip('Close Notepad') 
     closeAction.triggered.connect(self.close) 

     menubar = self.menuBar() 
     fileMenu = menubar.addMenu('&File') 
     fileMenu.addAction(newAction) 
     fileMenu.addAction(saveAction) 
     fileMenu.addAction(openAction) 
     fileMenu.addAction(closeAction) 

     self.text = QtGui.QTextEdit(self) 

     self.setCentralWidget(self.text) 
     self.setGeometry(300,300,500,500) 
     self.setWindowTitle('Pygame Simplified text editor') 
     self.show() 

    def newFile(self): 
     self.text.clear() 

    def saveFile(self): 
     filename = QtGui.QFileDialog.getSaveFileName(self, 'Save File', os.getenv('HOME')) 
     f = open(filename, 'w') 
     filedata = self.text.toPlainText() 
     f.write(filedata) 
     f.close() 


    def openFile(self): 
     filename = QtGui.QFileDialog.getOpenFileName(self, 'Open File', os.getenv('HOME')) 
     f = open(filename, 'r') 
     filedata = f.read() 
     self.text.setText(filedata) 
     f.close() 

def main(): 
    app = QtGui.QApplication(sys.argv) 
    notepad = Notepad() 
    sys.exit(app.exec_()) 

if __name__ == '__main__': 
    main() 

任何建议码?

+0

问题太宽泛,请注明。 – Schollii

回答

0

由于您没有指定“另一个GUI”是什么,我只是假设它是另一个PyQt4程序。在这种情况下,你所要做的就是使QMainWindow的行为像一个普通的小部件。

首先,改变Notepad.__init__以便它可以有一个父:

class Notepad(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     super(Notepad, self).__init__(parent) 
     ... 

然后调整window flags所以它不会像一个顶级窗口:

class AnotherGUI(QtGui.QMainWindow): 
    def __init__(self): 
     super(AnotherGUI, self).__init__() 
     self.notepad = Notepad(self) 
     self.notepad.setWindowFlags(
      self.notepad.windowFlags() & ~QtCore.Qt.Window) 
     self.button = QtGui.QPushButton('Submit', self) 
     ... 
+0

我编辑了我的问题 –

+0

@ Pro-grammer。你的问题仍然不清楚。请解释为什么我的答案不是解决方案。 – ekhumoro

+0

我解决了这个问题,我需要做一个继承一个小部件的类:)谢谢你指出我正确的方向:-) –

相关问题