import sys
import json
from PyQt5.QtCore import QUrl, Qt, QFile
from PyQt5.QtWidgets import QApplication, QMainWindow, QToolBar, QLineEdit, QPushButton, QTabWidget, QShortcut, QMessageBox
from PyQt5.QtWebEngineWidgets import QWebEngineView
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
# Sekme ayarları
self.tab_widget = QTabWidget()
self.setCentralWidget(self.tab_widget)
# İlk sekme
self.add_new_tab()
# Geri gitme butonunu ekleyin
back_button = QPushButton("<")
back_button.clicked.connect(self.current_view().back)
# İleri gitme butonunu ekleyin
forward_button = QPushButton(">")
forward_button.clicked.connect(self.current_view().forward)
# Mevcut URL'i gösteren bir QLineEdit ekleyin
url_bar = QLineEdit()
url_bar.setText("http://www.google.com")
url_bar.returnPressed.connect(lambda: self.current_view().setUrl(QUrl(url_bar.text())))
self.current_view().urlChanged.connect(lambda url: url_bar.setText(url.toString()))
# Arama butonunu ekleyin
search_button = QPushButton("Ara")
search_button.clicked.connect(lambda: self.current_view().load(QUrl("https://www.google.com/search?q=" + url_bar.text())))
# Sekme ekleme butonunu ekleyin
add_tab_button = QPushButton("+")
add_tab_button.clicked.connect(self.add_new_tab)
# Sekme kapatma butonunu ekleyin
close_tab_button = QPushButton("X")
close_tab_button.clicked.connect(self.close_current_tab)
# Araç çubuğu oluştur
toolbar = QToolBar()
self.addToolBar(toolbar)
toolbar.addWidget(back_button)
toolbar.addWidget(forward_button)
toolbar.addWidget(url_bar)
toolbar.addWidget(search_button)
toolbar.addWidget(add_tab_button)
toolbar.addWidget(close_tab_button)
# QLineEdit için Enter tuşu kısayolu tanımla
shortcut = QShortcut(Qt.Key_Return, self)
shortcut.activated.connect(lambda: self.current_view().load(QUrl("https://www.google.com/search?q=" + url_bar.text())))
# Yer imleri menüsünü oluştur
bookmarks_menu = self.menuBar().addMenu("Yer İmleri")
# Yer imleri dosyasını aç
try:
with open("bookmarks.json") as f:
bookmarks = json.load(f)
except FileNotFoundError:
# Yer imleri dosyası bulunamadıysa yeni bir tane oluştur
bookmarks = []
# Yer imleri menüsüne yer imleri ekle
for bookmark in bookmarks:
action = bookmarks_menu.addAction(bookmark["title"])
url = str(bookmark["url"])
action.triggered.connect(lambda checked, url=url: self.current_view().load(QUrl(url)))
# Yeni yer imi ekleyen düğmeyi ekle
add_bookmark_button = QPushButton("+")
add_bookmark_button.clicked.connect(lambda: self.add_bookmark(bookmarks_menu, bookmarks))
toolbar.addWidget(add_bookmark_button)
def current_view(self):
return self.tab_widget.currentWidget()
def add_new_tab(self):
view = QWebEngineView()
view.load(QUrl("http://www.google.com"))
self.tab_widget.addTab(view, "Yeni Sekme")
def close_current_tab(self):
if self.tab_widget.count() > 1:
widget_index = self.tab_widget.currentIndex()
self.tab_widget.removeTab(widget_index)
else:
self.close()
# Uygulama başlat
app = QApplication(sys.argv)
window = MainWindow()
window.setWindowTitle("Obsec webview")
window.show()
sys.exit(app.exec_())
Bu tarz bir yazılımda şu hatayı verdi:
Traceback (most recent call last):
File "D:\yazılım\obsec\webcontrol\qqt.py", line 99, in <module>
window = MainWindow()
File "D:\yazılım\obsec\webcontrol\qqt.py", line 72, in __init__
action = bookmarks_menu.addAction(bookmark["title"])
TypeError: string indices must be integers, not 'str'
str()
kullanarak pek çok yol denedim ancak çalışmadı json dosyası şu şekilde:
{
"Google": "https://www.google.com/",
"Facebook": "https://www.facebook.com/",
"Twitter": "https://twitter.com/",
"YouTube": "https://www.youtube.com/"
}
hatanın nedenini anlayamadım yardım edebilecek varsa ederse iyi olur