一个关于python图形化界面pyside6的UI问题

我使用pyside6的QT Designer制作了图形界面,并且转换成了py文件,在主程序中使用“类”可以正常工作,但我不想把整个程序都写到这一个类里面,如果写外部函数又调用不了类里面的按钮,文本框等(比如禁用按钮,设置文本显示)。
我的问题是:
1如何不使用“类”来实现 按钮连接函数 和 窗口的正常显示与工作,请给出简明的示例代码。
2如果用“类”,那么如何用外部函数来设置按钮禁用和文本内容显示,请给出简明示例代码。
3主程序中的self.setupUi(self)是什么意思?(为什么要写这句)
十分感谢!

主程序

class Widget(QWidget, Ui_Form):
    def __init__(self):  
        super().__init__()  
        self.setupUi(self)
        self.tsb.clicked.connect(self.testspeed)  
 
    def speed(self):
        self.cs.setText("测速中") 
        self.cs.setEnabled(False)  
        self.info.setText('测速中。。。')
        self.sccs_thread = Thread(target=self.sccs)  # 建立线程实例
        self.sccs_thread.start()  # 开启线程

界面文件

class Ui_Form(object):
    def setupUi(self, Form):
        if not Form.objectName():
            Form.setObjectName(u"Form")
        Form.resize(989, 997)
        #测速按钮
        self.tsb = QPushButton(Form)
        self.tsb.setObjectName(u"cs")
        self.tsb.setFont(font)
        #信息显示窗口
        self.info = QTextBrowser(Form)
        self.info.setObjectName(u"info")
        self.info.setFont(font)

解答:
1.如果不使用类,可以在主程序中直接实例化界面文件中的组件,并连接信号和槽。示例代码如下:

def testspeed():
    print("测速中")

if __name__ == '__main__':
    app = QApplication(sys.argv)
    form = Ui_Form()
    form.tsb.clicked.connect(testspeed)
    form.show()
    sys.exit(app.exec_())

2.如果使用类,可以在外部函数中传入类的实例,通过实例访问类中的组件。示例代码如下:

class Widget(QWidget, Ui_Form):
    def __init__(self):  
        super().__init__()  
        self.setupUi(self)
        self.tsb.clicked.connect(self.testspeed)  

def disable_button(widget):
    widget.tsb.setEnabled(False)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    widget = Widget()
    disable_button(widget)
    widget.show()
    sys.exit(app.exec_())

3.self.setupUi(self) 是将界面文件中定义的组件和布局应用到类的实例上,使得类的实例可以显示界面并对组件进行操作。

原文链接 https://www.wodianping.com/ask/2023-01/146.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值