[問題] 請問 map 指定的 function 會不會自動執行?
Os環境:Win7
Py版本: 3.8.10
PyQt5版本: 5.15.4
在 Create GUI Applications with Python & Qt5 這本書中,
有一個範例是透過for迴圈產生 widget 物件,並加到視窗。
想說試著改成用 map + List Comprehension 看看。
可是發現 map 似乎不會自動執行?
範例如下:(內容已縮減,但結果類似)
#---------------------------------------
import sys
from PyQt5.QtWidgets import *
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
layout = QVBoxLayout()
widgets = [ QCheckBox, QComboBox, QDateEdit ]
#for w in widgets: # <- 原範例使用for loop
# layout.addWidget(w()) # <- 原範例使用for loop
#改成 map + List Comprehension,但這樣寫視窗沒東西。
map(layout.addWidget, [ w() for w in widgets ])
#把 map 轉成list後,視窗可以跑出上面的三個元件
#list(map(layout.addWidget, [ w() for w in widgets ]))
widget = QWidget()
widget.setLayout(layout)
self.setCentralWidget(widget)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
app.exec_()
#-----------------------------------
另外,如果像下面這樣寫
m_l = map(layout.addWidget, [ w() for w in widgets ])
for mo in m_l:
mo
視窗也能跑出三個元件...
請問 map 只是把它參數裡的function與list內容配對好,
但不會直接執行嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.243.112.205 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Python/M.1648086182.A.58D.html
※ 編輯: pshuang (111.243.112.205 臺灣), 03/24/2022 09:49:08
→
03/24 09:50,
2年前
, 1F
03/24 09:50, 1F
推
03/24 09:50,
2年前
, 2F
03/24 09:50, 2F
→
03/26 06:44,
2年前
, 3F
03/26 06:44, 3F