如何访问Python中函数后定义的变量?

2024-09-30 16:30:56 发布

您现在位置:Python中文网/ 问答频道 /正文

如何访问Python中函数后定义的变量

这是我的代码:

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'

在函数中,(红色\u滑块)工作正常,但(绿色\u滑块)和(蓝色\u滑块)出现以下错误:

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

如果有人知道怎么了,请告诉我

先谢谢你


Tags: movevaluegreenbluergbredwindowqt
1条回答
网友
1楼 · 发布于 2024-09-30 16:30:56

您需要绑定信号和插槽 创建所有对象后(red_slider green_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_()

enter image description here

相关问题 更多 >