1

PySide Qt を使用して Python で記述されたブラウザー アプリケーションがあります。しかし今、ツールバーにボタンを追加して、Web サイトを印刷したいと考えています。どうすればいいですか?アプリケーションで CTRL + P が機能しないためです。

コードは次のとおりです。

import sys
from PySide import QtCore, QtGui, QtWebKit, QtHelp, QtNetwork

class MainWindow(QtGui.QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()

        Action1 = QtGui.QAction('Google', self)
        Action1.setShortcut('Ctrl+M')
        Action1.triggered.connect(self.load_message)
        self.toolbar1 = self.addToolBar('Google')
        self.toolbar1.addAction(Action1)

        Action2 = QtGui.QAction('Yahoo', self)
        Action2.setShortcut('Ctrl+H') 
        Action2.triggered.connect(self.load_list)
        self.toolbar2 = self.addToolBar('Yahoo')
        self.toolbar2.addAction(Action2)

        exitAction = QtGui.QAction('Exit', self)
        exitAction.setShortcut('Ctrl+Q') 
        exitAction.triggered.connect(self.on_exit)
        self.toolbar3 = self.addToolBar('Exit')
        self.toolbar3.addAction(exitAction)

        self.resize(750, 750)
        self.setWindowTitle('Browser')

        self.web = QtWebKit.QWebView(self)
        self.web.load(QtCore.QUrl('http://www.google.com'))
        self.setCentralWidget(self.web)

    def on_exit(self):
        QtGui.qApp.quit

    def load_message(self):
        self.web.load(QtCore.QUrl('http://www.google.com'))

    def load_list(self):
        self.web.load(QtCore.QUrl('http://www.yahoo.com'))

app = QtGui.QApplication(sys.argv)
app.setWindowIcon(QtGui.QIcon('myicon.ico'))
main_window = MainWindow()
main_window.show()    
sys.exit(app.exec_())
4

1 に答える 1

1

__init__メソッドに Print アクションを追加します。

printAction = QtGui.QAction('Print', self)
printAction.setShortcut('Ctrl+P') 
printAction.triggered.connect(self.do_print)
self.toolbar4 = self.addToolBar('Print')
self.toolbar4.addAction(printAction)

do_printメソッドを作成します。

def do_print(self):
    p = QtGui.QPrinter()
    p.setPaperSize(QtGui.QPrinter.A4)
    p.setFullPage(True)
    p.setResolution(300)
    p.setOrientation(QtGui.QPrinter.Portrait)
    p.setOutputFileName('D:\\test.pdf')
    self.web.print_(p)

これはファイルに出力されますD:\test.pdf

プリンターを別の方法で構成するには、QPrinterのドキュメントを参照してください。また、印刷プレビュー ダイアログが必要な場合は、QPrintPreviewDialogドキュメントを参照してください。

標準の印刷ダイアログが必要な場合は、次を使用します。

def do_print(self):
    p = QtGui.QPrinter()
    dialog = QtGui.QPrintDialog(p)
    dialog.exec_()
    self.web.print_(p)
于 2013-08-27T09:28:29.593 に答える