1
我需要製作一個帶有後退按鈕(無地址欄)的簡單瀏覽器,並且可以下載內容。 atm,它可以下載(使用這裏的代碼:PySide QWebView and downloading unsupported content),但我不能添加一個工具欄來添加一個後退按鈕。 現在,當我運行它時,它會創建2個窗口:一個用瀏覽器,一個用工具欄。我怎樣才能讓他們在一個窗口?無法使用PySide(Python)添加工具欄
import sys
import os
from time import sleep
from PySide import QtCore, QtGui, QtWebKit, QtNetwork
class Example(QtGui.QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI()
def initUI(self):
hbox = QtGui.QHBoxLayout(self)
pixmap = QtGui.QPixmap("tux.png")
lbl = QtGui.QLabel(self)
lbl.setPixmap(pixmap)
hbox.addWidget(lbl)
self.setLayout(hbox)
self.setGeometry(300, 300, 280, 170)
self.setWindowTitle('Red Rock')
self.show()
#self.hide()
class Browser(QtGui.QMainWindow):
def __init__(self):
QtGui.QMainWindow.__init__(self)
self.web = QtWebKit.QWebView()
self.tb=self.addToolBar("Toolbar")
self.tb.show()
self.web.page().setForwardUnsupportedContent(True)
self.web.page().unsupportedContent.connect(self.download)
self.manager = QtNetwork.QNetworkAccessManager()
self.manager.finished.connect(self.finished)
self.pbar=QtGui.QProgressBar()
self.pbar.setMaximumWidth(120)
exitAction = QtGui.QAction(QtGui.QIcon('ceva.png'), 'Exit', self)
exitAction.setShortcut('Ctrl+Q')
exitAction.triggered.connect(self.close)
backAction = QtGui.QAction(QtGui.QIcon('tux.png'), 'Back', self)
backAction.setShortcut('Ctrl+A')
backAction.triggered.connect(self.close)
self.toolbar = self.addToolBar('Exit')
self.toolbar.addAction(exitAction)
self.toolbar.addAction(backAction)
self.setGeometry(300, 300, 350, 250)
#self.setWindowTitle('Toolbar')
self.show()
def download(self, reply):
# this just shows me a picture to know it's downloading
self.loading=Example()
self.request = reply.request()
self.request.setUrl(reply.url())
self.reply = self.manager.get(self.request)
def finished(self):
path = os.path.expanduser(
os.path.join('~',
unicode(self.reply.url().path()).split('/')[-1]))
if self.reply.hasRawHeader('Content-Disposition'):
cnt_dis = self.reply.rawHeader('Content-Disposition').data()
if cnt_dis.startswith('attachment'):
path = cnt_dis.split('=')[1]
destination = QtGui.QFileDialog.getSaveFileName(self, "Save", path)
if destination:
f = open(destination[0], 'wb')
f.write(self.reply.readAll())
f.flush()
f.close()
if __name__ == '__main__':
app = QtGui.QApplication(sys.argv)
browser = Browser()
if len(sys.argv) > 1:
browser.web.load(QtCore.QUrl('http://' + argv[1]))
else:
browser.web.load(QtCore.QUrl('http://www.google.com'))
browser.web.show()
sys.exit(app.exec_())
謝謝你,作品像一個魅力! –
@AcsinteFlorin。如果您發現答案有幫助,請[標記爲已接受](http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work/65088#65088)。 – ekhumoro
他沒有,但我upvoted。 – Alex