我刚刚编写了一个代码来创建一个窗口(使用TKinter)并显示一个工作按钮.
b = Button(master, text="get", width=10, command=callback)
Run Code Online (Sandbox Code Playgroud)
但我想在这个下面有多个按钮.
如何设置按钮的行和列?我试图添加,row = 0, column = 0,但这不起作用.
谢谢
我可能过度思考了这一点,但由于某种原因,我似乎无法弄清楚这一点.我试图将滚动条附加到我的文本字段,但无法这样做.这是代码段:
self.scroller = Scrollbar(self.root)
self.scroller.place(x=706, y=121)
self.outputArea = Text(self.root, height=26, width=100)
self.outputArea.place(x=0, y=120)
self.scroller.config(command=self.outputArea.yview)
self.outputArea.config(state=DISABLED, yscrollcommand = self.scroller.set)
Run Code Online (Sandbox Code Playgroud)
这段代码在我的文本字段旁边放置一个非常小的滚动条(非常小,我的意思是你可以看到向上和向下箭头,但两者之间没有任何东西).当我的文本字段填满时,我可以用它滚动,但有没有办法至少设置滚动条的高度,使它看起来与文本字段的高度相同?
我收到这个错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1538, in __call__
return self.func(*args)
File "C:/Users/Marc/Documents/Programmation/Python/Llamachat/Llamachat/Llamachat.py", line 32, in download
with open(place_to_save, 'wb') as file:
PermissionError: [Errno 13] Permission denied: '/goodbye.txt'
Run Code Online (Sandbox Code Playgroud)
运行时:
def download():
# get selected line index
index = films_list.curselection()[0]
# get the line's text
selected_text = films_list.get(index)
directory = filedialog.askdirectory(parent=root,
title="Choose where to save your movie")
place_to_save = directory + '/' + selected_text
print(directory, selected_text, place_to_save)
with open(place_to_save, 'wb') as file:
connect.retrbinary('RETR ' …Run Code Online (Sandbox Code Playgroud) 我正在制作用户将从中选择的地址列表,并将返回地址文本.我需要使用Tkinter.Label因为Tkinter.Listbox不允许换行.
踢球者是.get()Label类中没有类似的方法...
我知道我可以这样做:
v = StringVar()
Label(master, textvariable=v).pack()
v.set("New Text!")
...
print v.get()
Run Code Online (Sandbox Code Playgroud)
但是,我有一个5-20地址列表'保持一个单独的数组StringVar()将是困难的b/c我无法识别活动标签的loc.我想只访问激活的小部件内容.
是否Tkinter.Label使用正确的小部件?
我正在开发一个小的Tkinter GUI来绘制matplotlib图.(它包含几个条目,并根据其内容组装图.)
我根据http://matplotlib.org/examples/user_interfaces/embedding_in_tk.html设计了我的绘图小部件,只使用网格而不是包:
canvas = FigureCanvasTkAgg(fig, master=root)
canvas.get_tk_widget().grid(row=1,column=4,columnspan=3,rowspan=20)
Run Code Online (Sandbox Code Playgroud)
那部分有效.但是以相同的方式嵌入NavigationToolbar却没有.当我包含这些行时,Tkinter会在没有错误的情况下崩溃:
toolbar = NavigationToolbar2TkAgg( canvas, root )
canvas._tkcanvas.grid(row=22,column=4)
Run Code Online (Sandbox Code Playgroud)
我知道这是因为NavigationToolbar调用pack内部,并pack与grid合不来.但是,我喜欢网格,并且不愿重新设计我的整个GUI只是为了能够使用NavigationToolbar.
有解决方法,所以我可以通过网格使用NavigationToolbar2TkAgg吗?(我已经找到了意见,"继承和过载" 在这里,但不知道该怎么做.)
任何帮助非常感谢!
试图学习tkinter和python.我想在相邻的框架中显示文本小部件的行号
from Tkinter import *
root = Tk()
txt = Text(root)
txt.pack(expand=YES, fill=BOTH)
frame= Frame(root, width=25)
#
frame.pack(expand=NO, fill=Y, side=LEFT)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我在一个名为unpythonic的网站上看到了一个例子,但它假设txt的行高为6像素.
我正在尝试这样的事情:
1)将Any-KeyPress事件绑定到返回按键发生的行的函数:
textPad.bind("<Any-KeyPress>", linenumber)
def linenumber(event=None):
line, column = textPad.index('end').split('.')
#creating line number toolbar
try:
linelabel.pack_forget()
linelabel.destroy()
lnbar.pack_forget()
lnbar.destroy()
except:
pass
lnbar = Frame(root, width=25)
for i in range(0, len(line)):
linelabel= Label(lnbar, text=i)
linelabel.pack(side=LEFT)
lnbar.pack(expand=NO, fill=X, side=LEFT)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这会在帧上给出一些奇怪的数字.有更简单的解决方案吗?怎么解决这个问题?
注意:这有点是对问题的跟进:Tkinter - 我什么时候需要调用mainloop?
通常在使用Tkinter时,您调用Tk.mainloop来运行事件循环并确保正确处理事件并且窗口保持交互而不会阻塞.
在交互式shell中使用Tkinter时,似乎不需要运行主循环.举个例子:
>>> import tkinter
>>> t = tkinter.Tk()
Run Code Online (Sandbox Code Playgroud)
将出现一个窗口,它不会阻止:您可以与它进行交互,拖动它并关闭它.
因此,交互式shell中的某些内容似乎确实创建了一个窗口并在后台运行事件循环.
现在为有趣的事情.再次从上面举例,但是在下一个提示中(不关闭窗口),输入任何内容 - 而不是实际执行它(即不要按回车键).例如:
>>> t = tkinter.Tk()
>>> print('Not pressing enter now.') # not executing this
Run Code Online (Sandbox Code Playgroud)
如果您现在尝试与Tk窗口进行交互,您将看到它完全阻止.因此,当我们向交互式shell输入命令时,我们认为将在后台运行的事件循环停止.如果我们发送输入的命令,您将看到事件循环继续,我们在阻塞期间所做的任何操作都将继续处理.
所以最大的问题是:交互式shell中发生的这种魔力是什么?当我们没有明确地执行它时,什么运行主循环?为什么我们输入命令时需要停止(而不是在执行命令时停止)?
注意:以上在命令行解释器中的工作方式与此类似,而不是IDLE.对于IDLE,我假设GUI实际上并不会告诉底层解释器已经输入了某些内容,而只是将输入保存在本地,直到它被执行.
我知道几个星期前我已经看到了答案,但我现在找不到它.
urllib.urlretrieve在Python 3.3中很简单.你怎么做呢?我正在尝试下载一个mp4/html(页面不存在)的场景,如果它不存在则为页面,如果它存在则为mp4(如果文件大小很小则我可以删除文件或以其他方式保留它) .
我运行的代码很好,完全按照我想要的方式在2.7中完成,但它在3.3中不起作用.
我正在处理两个版本的Python之间的令人头疼的问题,Tkinter和urllib.Tkinter在3.3中运行良好,但urllib没有,urllib在2.7中工作正常,但Tkinter没有.如何在3.3中正确下载?
我知道3.3已经改变了urllib,但是我找不到我一两周前看到的东西来指导我正确的方向.
当我添加Tkinter转换并且3.3刚出现并且给我urllib没有属性'urlretrieve;时,2.7几乎没有任何作用.我更喜欢3.3.
我在Ubuntu上用python编写程序,ls -l在RaspberryPi上执行命令,与Network连接.
任何人都可以指导我如何做到这一点?