首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PySide6单击按钮时更新字段

使用PySide6单击按钮时更新字段
EN

Stack Overflow用户
提问于 2022-07-31 13:42:35
回答 1查看 159关注 0票数 0

每当我单击桌面应用程序中的按钮时,我都在尝试更新一个字段(我不知道如何使用PySide6/Qt designer)。field的默认值设置为version 1.0。也就是说,当单击upload file按钮时,field将被更新到文件上传的文件目录中(请注意,应用程序是跨平台的: MacOS和WinOS)。单击view data时,field将被更新为data is in view mode

我不知道什么样的PySide6 Widget可以为我解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2022-08-04 11:24:38

您想要使用的是QActions。一个很好的技巧是使用QToolButton作为一个QPushButton,并在其中添加一个QAction,执行您想要的代码。例如,一些示例代码是:

代码语言:javascript
复制
from PySide6.QtGui import QAction
from PySide6.QWidget import (QToolButton, 
QMainWindow,
QApplication,
QVBoxLayout, 
QStatusBar)

## Rest of your code

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        layout = QVBoxLayout()
        self.upload_action = QAction("Upload File...", self)
        self.upload_action.setStatusTip("No File Selected")
        self.upload_action.triggered.connect(self.upload_action())
        upload_btn = QToolButton(self)
        upload_btn.setDefaultAction(self.upload_action)
        self.viewdata_action = QAction("View Data", self)
        self.viewdata_action.setStatusTip("No data to view")
        self.viewdata_action.triggered.connect(self.view_data())
        viewdata_btn = QToolButton(self)
        viewdata_btn.setDefaultAction(self.viewdata_action)
        self.connect_action = QAction("Connect...", self)
        self.connect_action.setStatusTip("Connect...")
        self.connect_action.triggered.connect(self.connect())
        connect_btn = QToolButton(self)
        connect_btn.setDefaultAction(self.connect_action)
        layout.addWidget(upload_btn)
        layout.addWidget(viewdata_btn)
        layout.addWidget(connect_btn)
        container = QWidget()
        container.setLayout(layout)
        self.setCentralWidget(container)
        self.setStatusBar(QStatusBar(self))
    def upload_action(self):
        file_loc = ""
        ## Your upload code here
        self.viewdata_action.setStatusTip(file_loc)
    def viewdata_action(self):
        self.viewdata_action.setStatusTip("Data is in view mode")
        ## Your view data code here
    def connect(self):
        ## Your connect code here

app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec()

希望这能帮助你实现你的目标。本质上,您创建一个操作,将其添加到按钮中,该操作具有更改状态栏的方法。由于您将操作创建为类属性,因此可以通过方法访问这些操作,从而允许您动态更新每个操作的状态栏文本。只有当您悬停在按钮上时,文本才会显示出来,所以如果您想静态地显示文本并对其进行更新,那么您将需要使用绑定到窗口底部的固定高度的QLabel。您可以将其样式设置为类似于代码中的状态栏,但这将允许要显示的文本保持不变。在本例中,与操作一样,您将QLabel设置为一个类属性,以便可以从构造函数作用域以外的方法中更新它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73183807

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档