如何从另一个 python 文件访问 QPushButton?
How to access QPushButton from another python file?
我正在创建一个应用程序,并且有一个用于按钮方法的 python 文件。我试图通过单击它来更改按钮的样式表,但是,我无法从 class.
外部更改按钮
示例:(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(...)
这样可以吗?我有很多按钮,我不想将所有方法塞进同一个 class.
我更愿意将所有内容放在一个 class 中,并在 buttonPushButtonClicked
中使用 self
而不是 Main
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, Ui_MainWindow):
def __init__(self, parent=None):
super(Main, 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
而不是 window 实例 self
import ButtonMethods
class Main(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(Main, 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
然后您可以使用不同按钮使用相同的功能。
但也许您应该使用 class PushButton
来创建自己的 class MyPushButton
.
我正在创建一个应用程序,并且有一个用于按钮方法的 python 文件。我试图通过单击它来更改按钮的样式表,但是,我无法从 class.
外部更改按钮示例:(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(...)
这样可以吗?我有很多按钮,我不想将所有方法塞进同一个 class.
我更愿意将所有内容放在一个 class 中,并在 buttonPushButtonClicked
self
而不是 Main
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, Ui_MainWindow):
def __init__(self, parent=None):
super(Main, 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
而不是 window 实例 self
import ButtonMethods
class Main(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self, parent=None):
super(Main, 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
然后您可以使用不同按钮使用相同的功能。
但也许您应该使用 class PushButton
来创建自己的 class MyPushButton
.