簡體   English   中英

如何訪問在 Python 中的 function 之后定義的變量?

[英]How can I access a variable that is defined after the function in Python?

如何訪問在 Python 中的 function 之后定義的變量?

這是我的代碼:

from PyQt5.QtWidgets import (QApplication, QLabel, QMainWindow, QSlider)
from PyQt5.QtCore import Qt
import sys


app = QApplication(sys.argv)

window = QMainWindow()


def change_value():

    window.setStyleSheet('QLabel{ \n'
                       'font-size:20px;\n'
                       'background:transparent;\n'
                       '}\n'
                       'QMainWindow{ \n'
                       f'background:rgb({red_slider.value()}, {green_slider.value()}, {blue_slider.value()});\n'
                       '}')

    red_value.setText(f'{rsv}')
    green_value.setText(f'{gsv}')
    blue_value.setText(f'{bsv}')
    


#-------------------------------------------------------------------#

red_label = QLabel('red', window)                                   # 
red_label.move(140, 247)                                            #
#                                                                   #
red_slider = QSlider(Qt.Horizontal, window)                         #
red_slider.setGeometry(190, 250, 200, 30)                           # 
red_slider.setMinimum(0)                                            # red
red_slider.setMaximum(255)                                          #
red_slider.valueChanged.connect(change_value)                       #
red_slider.setValue(255)                                            #
#                                                                   #
red_value = QLabel('0', window)                                     #
red_value.move(400, 247)
#-------------------------------------------------------------------#


#----------------------------------------------------------------------#

green_label = QLabel('green', window)                                  # 
green_label.move(135, 297)                                             #
#                                                                      #
green_slider = QSlider(Qt.Horizontal, window)                          #
green_slider.setGeometry(190, 300, 200, 30)                            # 
green_slider.setMinimum(0)                                             # green
green_slider.setMaximum(255)                                           # 
green_slider.valueChanged.connect(change_value)                        #
green_slider.setValue(255)                                             #
#                                                                      #
green_value = QLabel('0', window)                                      #
green_value.move(400, 297)
#----------------------------------------------------------------------#


#--------------------------------------------------------------------#

blue_label = QLabel('blue', window)                                  # 
blue_label.move(140, 347)                                            #
#                                                                    #
blue_slider = QSlider(Qt.Horizontal, window)                         #
blue_slider.setGeometry(190, 350, 200, 30)                           # 
blue_slider.setMinimum(0)                                            # blue
blue_slider.setMaximum(255)                                          #
blue_slider.valueChanged.connect(change_value)                       #
blue_slider.setValue(255)                                            #
#                                                                    #
blue_value = QLabel('0', window)                                     #
blue_value.move(400, 347)
#--------------------------------------------------------------------#



window.setStyleSheet('QLabel{ \n'
                   'font-size:20px;\n'
                   'background:transparent;\n'
                   '}\n'
                   'QMainWindow{ \n'
                   f'background:rgb({red_slider.value()}, {green_slider.value()}, {blue_slider.value()});\n'
                   '}')


window.show()

app.exec_()

我在這里得到了錯誤:

 f'background:rgb({red_slider.value()}, {green_slider.value()}, {blue_slider.value()});\n'

在 function 中, (red_slider) 效果很好,但 (green_slider) 和 (blue_slider) 給了我這個錯誤:

Traceback (most recent call last):
  File "E:\????? ????\????? ????\??????\??????? PyQt5\????? 1.py", line 18, in change_value
    f'background:rgb({red_slider.value()}, {green_slider.value()}, {blue_slider.value()});\n'
NameError: name 'green_slider' is not defined

如果有人知道出了什么問題,請告訴我

並提前感謝

創建所有對象( red_slidergreen_sliderblue_slider )后,您需要綁定信號和插槽

import sys
from PyQt5.QtWidgets import (QApplication, QLabel, QMainWindow, QSlider)
from PyQt5.QtCore import Qt


app = QApplication(sys.argv)
window = QMainWindow()

def change_value(value):
    window.setStyleSheet('QLabel{ \n'
                       'font-size:20px;\n'
                       'background:transparent;\n'
                       '}\n'
                       'QMainWindow{ \n'
                       f'background:rgb({red_slider.value()}, {green_slider.value()}, {blue_slider.value()});\n'
                       '}')

#    red_value.setText(f'{rsv}')
#    green_value.setText(f'{gsv}')
#    blue_value.setText(f'{bsv}')
    red_value.setText(f'{red_slider.value()}')
    green_value.setText(f'{green_slider.value()}')
    blue_value.setText(f'{blue_slider.value()}')


#-------------------------------------------------------------------#

red_label = QLabel('red', window)                                   # 
red_label.move(140, 247)                                            #
#                                                                   #
red_slider = QSlider(Qt.Horizontal, window)                         #
red_slider.setGeometry(190, 250, 200, 30)                           # 
red_slider.setMinimum(0)                                            # red
red_slider.setMaximum(255)                                          #
#red_slider.valueChanged.connect(change_value)                       #
red_slider.setValue(255)                                            #
#                                                                   #
red_value = QLabel('0', window)                                     #
red_value.move(400, 247)
#-------------------------------------------------------------------#


#----------------------------------------------------------------------#

green_label = QLabel('green', window)                                  # 
green_label.move(135, 297)                                             #
#                                                                      #
green_slider = QSlider(Qt.Horizontal, window)                          #
green_slider.setGeometry(190, 300, 200, 30)                            # 
green_slider.setMinimum(0)                                             # green
green_slider.setMaximum(255)                                           # 
#green_slider.valueChanged.connect(change_value)                        #
green_slider.setValue(255)                                             #
#                                                                      #
green_value = QLabel('0', window)                                      #
green_value.move(400, 297)
#----------------------------------------------------------------------#


#--------------------------------------------------------------------#

blue_label = QLabel('blue', window)                                  # 
blue_label.move(140, 347)                                            #
#                                                                    #
blue_slider = QSlider(Qt.Horizontal, window)                         #
blue_slider.setGeometry(190, 350, 200, 30)                           # 
blue_slider.setMinimum(0)                                            # blue
blue_slider.setMaximum(255)                                          #
#blue_slider.valueChanged.connect(change_value)                       #
blue_slider.setValue(255)                                            #
#                                                                    #
blue_value = QLabel('0', window)                                     #
blue_value.move(400, 347)
#--------------------------------------------------------------------#


red_slider.valueChanged.connect(change_value)                        #      <<<-----
green_slider.valueChanged.connect(change_value)                      #      <<<-----
blue_slider.valueChanged.connect(change_value)                       #      <<<-----



window.setStyleSheet('QLabel{ \n'
                   'font-size:20px;\n'
                   'background:transparent;\n'
                   '}\n'
                   'QMainWindow{ \n'
                   f'background:rgb({red_slider.value()}, {green_slider.value()}, {blue_slider.value()});\n'
                   '}')


window.show()
window.resize(500, 500)

app.exec_()

在此處輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM