![](/img/trans.png)
[英]How can I determine which variable to use for a defined function in python
[英]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_slider
、 green_slider
、 blue_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.