当我回答Tkinter问题时,我通常会尝试自己运行代码,但有时我会收到此错误:
Traceback (most recent call last):
File "C:\Python27\pygame2.py", line 1, in <module>
from tkinter import *
ImportError: No module named tkinter
Run Code Online (Sandbox Code Playgroud)
当我看到问题时,我看到他们tkinter用小写t 导入:
from tkinter import *
Run Code Online (Sandbox Code Playgroud)
我总是Tkinter用大写字母T 进口:
from Tkinter import *
Run Code Online (Sandbox Code Playgroud)
这总是适合我.使用tkinter和有Tkinter什么区别?
嘿,我是python的新手,我正在使用tkinter为我的gui.我在使用"after"方法时遇到了麻烦.目标是每5秒钟出现一个随机字母.
这是我的代码:
import random
import time
from tkinter import *
root = Tk()
w = Label(root, text="GAME")
w.pack()
frame = Frame(root, width=300, height=300)
frame.pack()
L1 = Label(root, text="User Name")
L1.pack(side=LEFT)
E1 = Entry(root, bd =5)
E1.pack(side=LEFT)
tiles_letter = ['a', 'b', 'c', 'd', 'e']
while len(tiles_letter) > 0:
rand = random.choice(tiles_letter)
tile_frame = Label(frame, text=rand)
tile_frame.pack()
frame.after(500)
tiles_letter.remove(rand) # remove that tile from list of tiles
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我 - 问题肯定是frame.after(500):我不确定使用"frame"是否正确,我不知道500后面的参数是什么.
谢谢
我试图Entry在用户使用Tkinter按下按钮后清除小部件.
我试过使用ent.delete(0, END),但是我得到一个错误,说字符串没有属性delete.
这是我的代码,我收到错误real.delete(0, END):
secret = randrange(1,100)
print(secret)
def res(real, secret):
if secret==eval(real):
showinfo(message='that is right!')
real.delete(0, END)
def guess():
ge = Tk()
ge.title('guessing game')
Label(ge, text="what is your guess:").pack(side=TOP)
ent = Entry(ge)
ent.pack(side=TOP)
btn=Button(ge, text="Enter", command=lambda: res(ent.get(),secret))
btn.pack(side=LEFT)
ge.mainloop()
Run Code Online (Sandbox Code Playgroud) 当用户按下我创建的关闭时 Button,某些任务在退出之前执行.但是,如果用户单击[X]窗口右上角的按钮关闭窗口,则无法执行这些任务.
如何覆盖用户单击[X]按钮时发生的情况?
我试图在for循环中创建tkinter中的按钮.并且每个循环都将i count值作为参数传递给命令值.因此,当从命令值调用函数时,我可以判断按下了哪个按钮并相应地执行操作.问题是,假设len为3,它将创建3个按钮,标题为"Game 1"到"Game 3",但是当按下任何按钮时,打印值总是2,即最后一次迭代.因此看起来按钮是作为单独的实体制作的,但命令参数中的i值似乎完全相同.这是代码:
def createGameURLs(self):
self.button = []
for i in range(3):
self.button.append(Button(self, text='Game '+str(i+1),command=lambda:self.open_this(i)))
self.button[i].grid(column=4, row=i+1, sticky=W)
def open_this(self, myNum):
print(myNum)
Run Code Online (Sandbox Code Playgroud)
有没有办法在每次迭代时获得当前的i值以坚持使用该特定按钮?
我正在创建一个带有浏览按钮的GUI,我只想返回路径.我一直在寻找使用如下代码的解决方案.
Tkinter.Button(subframe, text = "Browse", command = self.loadtemplate, width = 10).pack()
def loadtemplate(self):
filename = tkFileDialog.askopenfilename(filetypes = (("Template files", "*.tplate")
,("HTML files", "*.html;*.htm")
,("All files", "*.*") ))
if filename:
try:
self.settings["template"].set(filename)
except:
tkMessageBox.showerror("Open Source File", "Failed to read file \n'%s'"%filename)
Run Code Online (Sandbox Code Playgroud)
但是我知道Tkinter有一个内置的,askopenfilename这是一个非常简单的一行代码来打开文件.有没有办法修改它来返回目录而不是文件?是否有比我发布的更大代码块更小的选项?
我在学校做一个简单的项目,我需要点击六个不同的按钮.按钮必须有不同的大小,但我找不到怎么做.我使用以下方法制作了按钮:
def __init__(self, master):
super().__init__(master)
self.grid()
self.button1 = Button(self, text = "Send", command = self.response1)
self.button1.grid(row = 2, column = 0, sticky = W)
Run Code Online (Sandbox Code Playgroud)
我想像这样的东西:
self.button1.size(height=100, width=100)
Run Code Online (Sandbox Code Playgroud)
会工作,但它没有,我无法找到如何在任何地方做到这一点.
我使用的是Python 3.3.
我不确定我是否适合这类问题,如果没有,请告诉我,我会删除这个问题.无论如何,Tkinter的正确发音是什么?我环顾四周,有人说Tea Kay Inter,Tinkter,Tea Kin ter ......等等.但哪一个被正式接受?
我正在尝试创建一些按钮(带有for),如下所示:
def a(self, name):
print name
users = {"Test":"127.0.0.0", "Test2":"128.0.0.0"}
row = 1
for name in users:
user_button = Tkinter.Button(self.root,
text=name,
command=lambda: self.a(name))
user_button.grid(row = row, column = 0)
row+=1
Run Code Online (Sandbox Code Playgroud)
并且每个按钮都有自己的参数(Test getting Test和Test2得到Test2)但是当我按下按钮时它们都打印"Test2",这意味着它们使用相同的功能和相同的参数.
我怎么解决这个问题?
我知道这是一个太微不足道的问题,但我是python的新手,我刚刚开始使用该tkinter模块.我到处都看到了它,我无法找到满意的答案.我找到了以下内容:
fill选项:它确定是否占用更多空间或保留"自己的"维度.
expand选项:它处理父窗口小部件的扩展.
该问题是,这两个听起来或多或少相同.我甚至尝试了一些例子,通过在4个值fill和2个值之间切换expand但在2或3个案例中接收或多或少相同的输出,因为我有这个查询.在这方面,任何帮助将不胜感激.提前致谢!