Tkinter 中有没有办法编辑标题栏?诸如背景颜色前景色、标题栏大小等选项。这是我正在处理的一个类的代码,我正在寻找使标题栏与框架匹配的方法。
#CreateFile
from Tkinter import *
class CreateFile(Tk):
def __init__(self, model):
self.model=model
myfont = ("Arial", 11, "bold")
Tk.__init__(self)
self.title('Create New File')
self.resizable(0,0)
frame = Frame(self,bg='black')
self.lbl=Label(frame,text='Name: ',bg='black',fg='yellow')
self.lbl.grid(row=0,column=0)
self.file_entry=Entry(frame,width=30,font=myfont,bg='black',fg='yellow')
self.file_entry.bind('<Control-a>',self.select_all)
self.file_entry.grid(row=0,column=1)
self.create_btn=Button(frame,text='Create',bg='black',fg='yellow')
self.create_btn.grid(row=0,column=2,padx=10)
frame.grid()
self.mainloop()
def select_all(self,event):
print 'd'
model=None
createFile = CreateFile(model)
Run Code Online (Sandbox Code Playgroud) 我想在我的屏幕上动态创建 Tkinter 窗口。我知道我应该只有一个 mainloop()。我使用线程模块使 mainloop 在单独的线程中执行,因此它不会阻塞脚本。
执行主循环后如何创建更多 Tkinter 窗口?
请看一下我的代码:
from Tkinter import *
import threading
import time
class box:
def __init__(self, pos):
self.master = Tk()
self.master.geometry(pos)
self.canvas = Canvas(self.master, width=50, height=50, highlightthickness=0 )
self.canvas.pack()
self.rect = self.canvas.create_rectangle(0, 0, 50, 50, fill="red", outline="red")
self.text = self.canvas.create_text(25, 24, text="99",fill="white", font=("calibri", 24, "bold"))
def changeFill(self, color):
self.canvas.itemconfig(self.rect, fill=color, outline=color) # change color
class box_manager(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.boxes = {}
self.add_box(1, "50x50+300+300")
self.add_box(2, "50x50+100+100")
def add_box(self, num, pos):
self.boxes[num] = box(pos)
def …Run Code Online (Sandbox Code Playgroud) 我对编程很陌生,我刚刚编写了这段小代码来在画布中移动球。它工作得很好,除了“顶部”和“底部”按钮没有按预期工作;他们所做的与他们应该做的完全相反!我道歉,但经过一个小时的头痛,我就是无法理解。谢谢你的帮助。
from tkinter import *
x1, y1 = 135, 135
def moveo (lr, tb):
global x1, y1
x1, y1 = x1+lr, y1+tb
can.coords (oval, x1, y1, x1+30, y1+30)
def moveLeft ():
moveo (-10,0)
def moveRight ():
moveo (10,0)
def moveTop ():
moveo (0,10)
def moveBottom ():
moveo (0,-10)
##########MAIN############
wind = Tk()
wind.title ("Move Da Ball")
can = Canvas (wind, width = 300, height = 300, bg = "light blue")
can.pack (side = LEFT,padx = 5, pady = 5)
oval …Run Code Online (Sandbox Code Playgroud) 我有点麻烦。当我使用 askopenfilename 时,它在 Windows 和 Linux 上运行良好,但 Mac 似乎在给我指点迷津....
下面是一个例子:
... (Code before all this)
def openFile(self):
self.fileName = askopenfilename(filetypes=[("All Files", "*.*")])
... (Code after all this)
Run Code Online (Sandbox Code Playgroud)
问题是,当我单击我拥有的打开按钮时,会调用此方法,即使在 Mac 上也可以打开对话框,但对话框中的所有内容都变灰,并且不会让我选择任何文件。为什么不?我该如何解决这个问题?
我正在尝试在Python tkinter中创建一个涉及火箭飞船和一些小行星的游戏.问题是,火箭飞船由多种形状组成.我不需要关于如何简化火箭形状的建议,但如果我能在画布上使用图像的指针,那可能会更好.
无论如何,我正在研究如何将多个形状组合成单个形状或一次移动多个形状的方法.这涉及ID和标签的使用,我不清楚我应该使用哪些以及为什么.
为什么我需要一次移动多个形状?火箭飞船由多种形状组成,需要从一侧移动到另一侧.我真的不希望一堆self.canvas.move()方法弄乱我的代码,所以如果有人能帮助我,我会非常感激.提前致谢!
我可以在tkinter中使用rbg代替十六进制吗?如果是这样,我该怎么办?我打算使用此功能使某种颜色从一种颜色过渡到另一种颜色,并且我计划进行for循环以在几秒钟内将其从1更改为255。
from tkinter import *
root = Tk()
root.configure(background="can i use rgb instead of hex here?")
root.mainloop()
Run Code Online (Sandbox Code Playgroud) import tkinter as tk
a = "hi"
print(a)
a1 = tk.StringVar()
a1.set("Hi")
print(a1)
Run Code Online (Sandbox Code Playgroud)
hi ##(Output from first print function)
AttributeError: 'NoneType' object has no attribute '_root' (Output from second print function)
Run Code Online (Sandbox Code Playgroud)
是什么区别a,并a1在上面的代码及其使用情况。为什么a1给出错误?
我不确定如何在Python中显示来自不同目的地的图像.我需要知道如何让图像显示在我的程序上.我尝试使用以下代码,但它不会将gif文件显示在Python程序中.我的文件名为"giftest.gif",它与程序位于同一文件夹中,但仍然无法显示,而是弹出错误.
from tkinter import *
root = Tk()
canvas = Canvas(root, width=500, height=500)
canvas.pack()
imagetest = Image("giftest.gif")
canvas.create_image(250, 250, image=imagetest)
root.mainloop()
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一些代码,这些代码将Entry根据绑定将盒子的值发送给函数。从技术上讲,我可以在下面的代码中获得所需的行为,但是我a)不知道为什么会这样,并且b)非常确定我没有以最pythonic的方式执行此操作。我敢肯定,我误解的event或lambda或两者兼而有之。
在绑定触发时,在Entry框下方的代码中input_box1,该inp_var1.get()代码仅获取默认值,而不获取任何已输入到该框中的内容。换句话说,该test1函数将打印...
Test1 Foo
...无论您输入什么内容。
上的绑定input_box2完全符合我的预期。我在其中键入任何内容,然后单击其他位置,它会打印新条目。但是我不明白为什么我lambda不想要event或为什么我需要重复inp_var2.get()通话。
如果有人知道引擎盖下发生了什么,我很想听听!这是代码:
from tkinter import *
from tkinter import ttk
def test1(event, i):
print('Test1', i)
def test2(event, i):
print('Test2', i)
root = Tk()
title_label = Label(root, text='This does not work!')
title_label.grid(column=0, row=0)
inp_var1 = StringVar(value='Foo')
input_box1 = Entry(root, textvariable=inp_var1)
input_box1.grid(column=0, row=1)
inp_var2 = StringVar(value='Bar')
input_box2 = Entry(root, textvariable=inp_var2)
input_box2.grid(column=0, row=2)
input_box1.bind('<FocusOut>', lambda event, …Run Code Online (Sandbox Code Playgroud) tkinter ×10
python ×8
python-3.x ×3
colors ×1
editor ×1
lambda ×1
macos ×1
options ×1
titlebar ×1
tk-toolkit ×1