我在工具栏中有很多动作,并尝试在PyQt5中按下动作使字体变为粗体

时间:2016-11-25 09:35:37

标签: python pyqt pyqt5

我制作了一个在三个工具栏中有各种动作的用户界面。我试图通过鼠标按下并释放一个动作的字体为粗体。我知道如何使字体逐个加粗。但是我要在这三个工具栏中添加几十个动作。我怎么能这样做?谁能帮我? 非常感谢你。

主要功能确实使action1的字体变为粗体。

主要功能:

    @ViewChildren('search') searchInput: QueryList<any>;

    toggleSearch(){
        this.showSearch = !this.showSearch;
        if (this.showSearch){
            console.log(this.searchInput.first); <= undefined
        }
    }

UI代码

			<li class="search" *ngIf="showSearch" >
				<i class="news-admin-icon news-admin-search"></i>
				<input (blur)="toggleSearch()" #search (keyup)="searchNews(search.value)" type="text" placeholder="Search">
			</li>
			</li>
			<li class="special" *ngIf="!showSearch" (click)="toggleSearch(search)">
				<a href="#"><i class="news-admin-icon news-admin-search"></i>  Search</a>
			</li>

UI由PyQt5设计师创建。

1 个答案:

答案 0 :(得分:0)

执行此操作的一种方法是连接到每个工具栏的actionTriggered信号,该信号发送单击的操作。假设您一次只想要一个粗体操作,则可以使用此操作为当前操作启用粗体,并为上一个操作关闭粗体(如果有):

class window(QMainWindow):
    def __init__(self, parent=None):
        ...
        for toolbar in self.findChildren(QtWidgets.QToolBar):
            toolbar.actionTriggered.connect(self.setBoldAction)

    def setBoldAction(self, target, toolbar=None):
        if toolbar is None:
            toolbar = self.sender()
        for action in toolbar.actions():
            if not action.isSeparator():
                font = action.font()
                font.setBold(action is target)
                action.setFont(font)

如果要以编程方式设置粗体操作,还可以执行以下操作:

    self.setBoldAction(action, toolbar)