QAction 大小 PyQt5

QAction size PyQt5

from PyQt5 import Qt
from PyQt5.QtCore import QUrl
from PyQt5.QtWebEngineWidgets import QWebEngineView
from PyQt5.QtWidgets import *
from sys import argv


class Window(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)

        self.browser = QWebEngineView()
        self.browser.setUrl(QUrl('https://www.duckduckgo.com'))
        self.browser.urlChanged.connect(self.update_AddressBar)
        self.setCentralWidget(self.browser)

        self.navigation_bar = QToolBar('Navigation Toolbar')
        self.addToolBar(self.navigation_bar)
        self.navigation_bar.setAttribute(Qt.Qt.WA_StyledBackground, True)
        self.navigation_bar.setStyleSheet('background-color: white;')
        self.navigation_bar.setMinimumSize(0, 75)
        self.navigation_bar.setMovable(False)

        back_button = QAction("←", self)
        back_button.setStatusTip('Go to previous page you visited')
        back_button.triggered.connect(self.browser.back)
        self.navigation_bar.addAction(back_button)

        next_button = QAction("→", self)
        next_button.setStatusTip('Go to next page')
        next_button.triggered.connect(self.browser.forward)
        self.navigation_bar.addAction(next_button)

        refresh_button = QAction("⟳", self)
        refresh_button.setStatusTip('Refresh this page')
        refresh_button.triggered.connect(self.browser.reload)
        self.navigation_bar.addAction(refresh_button)

        home_button = QAction("⌂", self)
        home_button.setStatusTip('Go to home page (Google page)')
        home_button.triggered.connect(self.go_to_home)
        self.navigation_bar.addAction(home_button)

        #self.navigation_bar.addSeparator()

        self.URLBar = QLineEdit()
        self.URLBar.returnPressed.connect(lambda: self.go_to_URL(QUrl(self.URLBar.text())))  # This specifies what to do when enter is pressed in the Entry field
        self.navigation_bar.addWidget(self.URLBar)

        self.addToolBarBreak()

        self.show()

    def go_to_home(self):
        self.browser.setUrl(QUrl('https://www.duckduckgo.com/'))

    def go_to_URL(self, url: QUrl):
        if url.scheme() == '':
            url.setScheme('http://')
        self.browser.setUrl(url)
        self.update_AddressBar(url)

    def update_AddressBar(self, url):
        self.URLBar.setText(url.toString())
        self.URLBar.setCursorPosition(0)


app = QApplication(argv)
app.setApplicationName('Libertatem Browser')

window = Window()
app.exec_()

如您在我的代码中所见,我有 4 个 QAction。我想让这些更大。我怎样才能做到这一点?我见过其他人使用 back_button.geometry(),但您不能使用 QActions 来做到这一点。

我更愿意将它们保留为 QAction,因为我花了很长时间来设置它们。附带说明一下,更改字体大小会使按钮变大吗?

如果您更改与 QAction 关联的按钮的大小,这不会产生很大的不同,您可以按以下方式进行:

button = toolbar.widgetForAction(action)
button.setFixedSize(100, 100)

但在这种情况下,最好更改字体大小,因为按钮的大小(以及 QToolBar 的高度)取决于它。

import sys

from PyQt5.QtCore import Qt, QUrl, QSize
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QAction, QApplication, QLineEdit, QMainWindow, QToolBar
from PyQt5.QtWebEngineWidgets import QWebEngineView


class Window(QMainWindow):
    def __init__(self, *args, **kwargs):
        super(Window, self).__init__(*args, **kwargs)

        self.browser = QWebEngineView()
        self.browser.setUrl(QUrl("https://www.duckduckgo.com"))
        self.browser.urlChanged.connect(self.update_AddressBar)
        self.setCentralWidget(self.browser)

        self.navigation_bar = QToolBar("Navigation Toolbar", movable=False)
        self.addToolBar(self.navigation_bar)
        self.navigation_bar.setAttribute(Qt.WA_StyledBackground, True)
        self.navigation_bar.setStyleSheet("background-color: white;")

        font = QFont()
        font.setPixelSize(40)

        back_action = QAction("←", self)
        back_action.setStatusTip("Go to previous page you visited")
        back_action.triggered.connect(self.browser.back)
        back_action.setFont(font)
        self.navigation_bar.addAction(back_action)

        next_action = QAction("→", self)
        next_action.setStatusTip("Go to next page")
        next_action.triggered.connect(self.browser.forward)
        next_action.setFont(font)
        self.navigation_bar.addAction(next_action)

        refresh_action = QAction("⟳", self)
        refresh_action.setStatusTip("Refresh this page")
        refresh_action.triggered.connect(self.browser.reload)
        refresh_action.setFont(font)
        self.navigation_bar.addAction(refresh_action)

        home_action = QAction("⌂", self)
        home_action.setStatusTip("Go to home page (Google page)")
        home_action.setFont(font)
        home_action.triggered.connect(self.go_to_home)
        self.navigation_bar.addAction(home_action)

        self.URLBar = QLineEdit()
        self.URLBar.returnPressed.connect(self.handle_return_pressed)
        self.navigation_bar.addWidget(self.URLBar)

    def go_to_home(self):
        self.browser.setUrl(QUrl("https://www.duckduckgo.com/"))

    def go_to_URL(self, url: QUrl):
        if url.scheme() == "":
            url.setScheme("http://")
        self.browser.setUrl(url)
        self.update_AddressBar(url)

    def update_AddressBar(self, url):
        self.URLBar.setText(url.toString())
        self.URLBar.setCursorPosition(0)

    def handle_return_pressed(self):
        url = QUrl.fromUserInput(self.URLBar.text())
        self.go_to_URL(url)


def main():
    app = QApplication(sys.argv)
    app.setApplicationName("Libertatem Browser")

    window = Window()
    window.show()
    sys.exit(app.exec_())


if __name__ == "__main__":
    main()