代码之家  ›  专栏  ›  技术社区  ›  John

为函数提供列表

  •  1
  • John  · 技术社区  · 1 年前

    到目前为止,我从未遇到过这个问题,也无法思考如何继续。 我想知道如何将元组的每个元素提供给需要单独参数的函数:

    myTuple = (1,2,3,4)
    
    def myFunction(w, x, y, z):
    

    但称之为:

    u = myFunction(myTuple)
    

    这可能无关紧要,但应用程序必须使用PyQt的QPainter进行绘制,并在列表中提供坐标(mylist,在下面的代码中):

    #!/usr/bin/python3
    import sys
    from PyQt5.QtWidgets import QLabel, QMainWindow, QApplication
    from PyQt5.QtCore import Qt
    from PyQt5.QtGui import QPainter, QPixmap
    
    class MyWindow(QMainWindow):
        def __init__(self):
            super().__init__()
            lbl = QLabel()
            pm = QPixmap(70, 70)
            pm.fill(Qt.white)
            lbl.setPixmap(pm)
            self.setCentralWidget(lbl)
            p = QPainter(lbl.pixmap())
            p.drawLine(10,20,10,40)
            line = (10,40, 40, 50)
            p.drawLine(line)
            p.end()
            self.show()
    
    app = QApplication(sys.argv)
    win = MyWindow()
    app.exec_()
    

    谢谢你的帮助。

    1 回复  |  直到 1 年前
        1
  •  1
  •   user24714692    1 年前
    • 你可以改变 p.drawLine(line) p.drawLine(*line) .
    • 此外,你可能想作为 list() tuple() (注意 list = (1,2,3,4) 不是 列表 .):
    #!/usr/bin/python3
    import sys
    from PyQt5.QtWidgets import QLabel, QMainWindow, QApplication
    from PyQt5.QtCore import Qt
    from PyQt5.QtGui import QPainter, QPixmap
    
    class MyWindow(QMainWindow):
        def __init__(self):
            super().__init__()
            lbl = QLabel()
            pm = QPixmap(70, 70)
            pm.fill(Qt.white)
            lbl.setPixmap(pm)
            self.setCentralWidget(lbl)
            p = QPainter(lbl.pixmap())
            p.drawLine(10,20,10,40)
            line = [10,40, 40, 50]
            p.drawLine(*line)
            p.end()
            self.show()
    
    app = QApplication(sys.argv)
    win = MyWindow()
    app.exec_()
    

    笔记

    What's the difference between lists and tuples?

    推荐文章