我有一个用pySide Qt用python编写的浏览器应用程序。但是现在我想在工具栏中添加一个按钮来打印网站。我该怎么做呢?因为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_())

最佳答案

在您的__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)

关于python - 打印按钮工具栏PySide Python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18459814/

10-11 23:17
查看更多