如何解决如何从另一个python文件访问QPushButton?
我正在创建一个应用程序,并且具有用于按钮方法的python文件。我试图通过单击按钮来更改按钮的样式表,但是,我不能从类外部更改按钮。
示例:(ui来自QtDesigner UI文件)
Python文件主要:
class Main(QtWidgets.QMainWindow,Ui_MainWindow):
def __init__(self,parent=None):
super(Main,self).__init__(parent)
self.setupUi(self)
self.button.clicked.connect(ButtonMethods.buttonPushButtonClicked)
Python文件ButtonMethods:
from Main import Main
def buttonPushButtonClicked():
Main.button.setStyleSheet(...)
可以这样做吗?我有很多按钮,而且我不想将所有方法都塞进同一个类中。
解决方法
我希望将所有课程放在一起,并使用self
而不是Main
中的buttonPushButtonClicked
class Main(QtWidgets.QMainWindow,Ui_MainWindow):
def __init__(self,parent=None):
super(Main,self).__init__(parent)
self.setupUi(self)
self.button.clicked.connect(self.buttonPushButtonClicked) # <-- self (window instance)
def buttonPushButtonClicked(self): # <-- self (window instance)
self.button.setStyleSheet(...) # <-- self (window instance)
如果需要将其作为外部对象,则还应该发送Main
的实例作为参数-但是这种方式您将必须手动执行-即。使用lambda
为参数赋值函数
import ButtonMethods
class Main(QtWidgets.QMainWindow,self).__init__(parent)
self.setupUi(self)
self.button.clicked.connect(lambda:ButtonMethods.buttonPushButtonClicked(self)) # <-- self (window instance)
# --- file ButtonMethods.py ---
def buttonPushButtonClicked(window): # <-- window instance
window.button.setStyleSheet(...) # <-- window instance
顺便说一句::这样,您可以发送按钮实例self.button
而不是窗口实例self
import ButtonMethods
class Main(QtWidgets.QMainWindow,self).__init__(parent)
self.setupUi(self)
self.button.clicked.connect(lambda:ButtonMethods.buttonPushButtonClicked(self.button)) # <-- self.button (button instance)
# --- file ButtonMethods.py ---
def buttonPushButtonClicked(button): # <-- button instance
button.setStyleSheet(...) # <-- button instance
然后您可以通过不同的按钮使用相同的功能。
但是也许您应该使用类PushButton
来创建自己的类MyPushButton
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。