我基本上是在为一个基本的pygame绘图应用程序编写一个模块。我使用Tk窗口来获取自定义颜色的三个颜色值。我有一个文件,打开一个Tk窗口,并要求3个颜色值作出,但我不知道如何让所有的工作很好,我开始感到困惑
以下是Tk窗口的代码:
from Tkinter import *
class Custom():
def get_color(self):
root = Tk()
root.configure(background='black')
root.wm_title("Custom")
label1 = Label(root, text='Red Value:',bg="black", fg="white")
label1.grid(row=2, column=0,columnspan=2)
enter1 = Entry(root, bg='white')
enter1.grid(row=3, column=0,columnspan=2)
label2 = Label(root, text='Green Value:',bg="black", fg="white")
label2.grid(row=4, column=0,columnspan=2)
enter2 = Entry(root, bg='white')
enter2.grid(row=5, column=0, columnspan=2)
label3 = Label(root, text='Blue Value:',bg="black", fg="white")
label3.grid(row=6, column=0,columnspan=2)
enter3 = Entry(root, bg='white')
enter3.grid(row=7, column=0, columnspan=2)
btn1 = Button(root, text='OK', command= self.return_color, bg="black",activebackground="green", fg="white")
btn1.grid(row=14, column=0, columnspan=2)
label7 = Label(root, bg="black", fg = "white")
label7.grid(row=15, column=0, columnspan=2)
enter1.focus()
root.mainloop()
def return_color(self):
try:
r = str(self.enter1.get())
g = str(self.enter2.get())
b = str(self.enter3.get())
except ValueError:
window.label7.config(text='Enter Numbers!', fg = "red")
root.destroy()
return (r,g,b)
c = Custom()
c.get_color()
它工作,但我试图能够导入它,所以我做了两个函数,把它们放在一个类中,但现在我感到困惑,我需要运行get_color
然后当我点击确定按钮,我需要运行return_color
我不知道这是不是一种方式来做我只是一直在尝试各种不同的事情,它说return_color
不能得到self.enter1.get()
相同输入2和3
这里是我给我的画板程序的地方:
if key[pygame.K_c]:
import CustomColor
c = CustomColor.Custom()
c.get_color()
self.color = c.return_color()
我开始很困惑,如果有人能澄清这一切,我会非常感谢!!你知道吗
问题是没有使用
return_color
的返回值,因为作为命令选项传递的函数的引用用于调用它,而不是存储结果。您可以做的是将值作为类的属性存储在return_color
中,并在调用后的get_color
中添加一个return语句来启动mainloop:在使用颜色之前,您可以检查格式是否正确。然后,我建议您使用更有意义的名称重命名函数;创建一个Tk元素,将其撤消,并在类中使用顶级(如果您创建多个自定义对象,实际上是在创建多个Tk元素,这是应该避免的)。你知道吗
相关问题 更多 >
编程相关推荐