我正在嘗試使動態小部件,使他們可點擊。通過點擊一個小部件,它應該將動態值傳遞給其他小部件。我曾嘗試發件人()和其他選項訪問小部件,但沒有任何工作。 所有小部件都從最後一個小部件發送信息。PyQt5使動態小部件可點擊並將參數傳遞給另一個函數
下面是代碼:
import sys
from PyQt5.QtGui import QIcon, QPixmap
from PyQt5.QtWidgets import QApplication, QWidget, QMainWindow, QPushButton, QLabel, QMessageBox,QSizePolicy, QLayoutItem,QFrame,QHBoxLayout, QGridLayout, QVBoxLayout
from PyQt5.QtCore import QCoreApplication,QSize,QFileInfo
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from functools import partial
from PyQt5.QtCore import pyqtSlot
import sip
class Screen(QWidget):
def __init__(self):
super(Screen, self).__init__()
self.running_layout = QVBoxLayout()
self.action_layout = QVBoxLayout()
self.layout = QHBoxLayout(self)
self.layout.addLayout(self.running_layout)
self.layout.addLayout(self.action_layout)
self.setLayout(self.layout)
self.show()
self.all_running()
self.actions_1('1')
def buttonClicked(self):
sender = self.sender()
print(sender + ' was pressed')
def all_running(self):
for i in range(5):
button = QLabel("btn "+str(i))
button.mouseReleaseEvent = lambda _ : self.actions_1(str(button.text()).split()[1])
self.running_layout.addWidget(button)
button2 = QLabel("btn 5")
button2.mouseReleaseEvent = lambda _ : self.actions_1(str(button2.text()).split()[1])
self.running_layout.addWidget(button2)
def actions_1(self,value):
while not self.action_layout.isEmpty():
print(self.action_layout.isEmpty())
widget = self.action_layout.itemAt(0).widget()
print("removing", widget)
widget.setVisible(False)
self.action_layout.removeWidget(widget)
del widget
self.action_layout = QVBoxLayout()
self.layout.addLayout(self.action_layout)
val = int(value)
for i in range(val):
actions_item = QLabel(str(i))
self.action_layout.addWidget(actions_item)
app = QApplication(sys.argv)
Gui = Screen()
sys.exit(app.exec_())
編輯:我想爲int傳遞給基礎上,int值小部件,這個數字需要得到填充動作。 這個int基於我使用for循環生成的動態小部件。 例如,如果單擊running_layout「btn 0」的第一個小部件,action_layout中將不會有任何小部件。如果單擊running_layout「btn 1」的第二個小部件,action_layout中將有一個小部件「0」,並且依此類推。 我可以發送信號,但無論哪個動態創建的小部件,我點擊它發送最後一個小部件「btn 4」的值4到action_layout。
你可以在你想要做什麼詳細的解釋。 – eyllanesc
簡而言之:如果您按下小部件btn我然後在其他佈局應該出現我的小部件。 – eyllanesc
這就是我正在尋找的東西。 –