python - 如何从另一个 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文件按钮方法:
from Main import Main
def buttonPushButtonClicked():
Main.button.setStyleSheet(...)
有可能这样做吗?我有很多按钮,我不想将所有方法都塞进同一个类中。
解决方案
我宁愿把所有东西都放在一个类中并使用self
而不是Main
inbuttonPushButtonClicked
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
而不是窗口实例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
然后您可以使用不同的按钮使用相同的功能。
但也许你应该使用 classPushButton
创建自己的 class MyPushButton
。
推荐阅读
- mysql - 使用 mysql 从 Wordpress 网站在 Laravel 应用程序中插入数据
- flutter - Flutter_Swiper 文本覆盖图像
- sql - Oracle父子查询
- sql - 使用 SQL 计算 Fifo
- android - 如何避免本地 Web 应用程序数据被擦除?
- node.js - Nodejs odbc - 插入语句不起作用
- javascript - 尽管使用单独的测试文件,RegExp 匹配仍返回 null
- linux - 在linux终端中的gz中逐个文件压缩文件
- python - PANDAS - 如何在分组后获得经过的天数
- python - Seaborn:并排绘制 2 个配对图