我正在尝试构建一个小的PyQt5应用程序,它将在我的文件目录上做一些工作。我需要构建一个QGridLayout来保存按钮。当然,内容可能会发生变化,所以我通过循环遍历简单对象列表(路径,文件名等)来构建按钮。
我的问题是:如何从循环中构建按钮的“on_click”操作时传递一个识别参数?我不太关心从点击返回的内容 - 我可以通过这种或那种方式找到匹配的文件对象。
这是我的代码:
$signString = 'Signtool.exe sign /f MyCert.pfx /d "My Product Name" /du "http://www.example.com/my_product/info.html" MyControl.exe'
& $signString
有趣的部分只是以“for obj in Listing”开头的小循环 - 这是我的文件对象循环。我使用一个简单的计数器在每个按钮的GridLayout中向下一行。但我无法弄清楚如何从点击功能中传递一个唯一的参数。
答案 0 :(得分:0)
有几种方法可以执行此任务,我将列出一些:
services.AddMvc(options =>
{
options.Filters.Add(new SwaggerIgnore(new[] { "delete", "post", "put" }));
});
这是一个函数,它返回发出信号的对象和窗口小部件的某些属性,在sender()
的情况下,您可以使用显示的文本QPushButton
class Widget(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
self.setLayout(QVBoxLayout())
for i in range(10):
button = QPushButton("{}".format(i), self)
self.layout().addWidget(button)
button.clicked.connect(self.on_click)
@pyqtSlot()
def on_click(self):
print("button-{}".format(self.sender().text()))
为每个窗口小部件指定一个特定名称objectName()
class Widget(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
self.setLayout(QVBoxLayout())
for i in range(10):
button = QPushButton("{}".format(i), self)
self.layout().addWidget(button)
button.setObjectName("button-{}".format(i))
button.clicked.connect(self.on_click)
@pyqtSlot()
def on_click(self):
print(self.sender().objectName())
class Widget(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
self.setLayout(QVBoxLayout())
for i in range(10):
button = QPushButton("{}".format(i), self)
self.layout().addWidget(button)
button.clicked.connect(lambda checked, i=i: self.on_click(i))
def on_click(self, i):
print("button-{}".format(i))
QButtonGroup
class Widget(QWidget):
def __init__(self, *args, **kwargs):
QWidget.__init__(self, *args, **kwargs)
self.setLayout(QVBoxLayout())
group = QButtonGroup(self)
for i in range(10):
button = QPushButton("{}".format(i), self)
self.layout().addWidget(button)
group.addButton(button, i)
group.buttonClicked[int].connect(self.on_click)
group.buttonClicked.connect(self.on_click2)
@pyqtSlot(int)
def on_click(self, i):
print("button-{}".format(i))
def on_click2(self, btn):
print("2button-{}".format(btn.text()))
functools.partial