在Python中使用tkinter,关闭根窗口时root.destroy()和之间的区别是什么root.quit()?
一个优先于另一个吗?是否释放了另一个没有的资源?
我一直在搞乱Tkinter Canvas小部件,看看我是否可以制作一些美观的小部件,我有几个问题.
首先,为什么我的Canvas小部件周围有一个浅灰色边框,我该如何摆脱它呢?
其次,为什么画布中最左边的位置(2,2)?看起来应该是(0,0).
我目前的剧本:
from Tkinter import *
master = Tk()
master.configure(bg='black')
master.wm_attributes("-topmost", 1)
w = Canvas(master, width=150, height=40, bd=0,relief='ridge',)
w.pack()
color = 100
x0 = 2
y0 = 2
x1 = 151
y1 = 2
while y0 < 20 :
r = color
g = color
b = color
rgb = r, g, b
Hex = '#%02x%02x%02x' % rgb
w.create_line(x0, y0, x1, y1,fill=str(Hex), width=1)
color = color - 2
y0 = y0 + 1
y1 …Run Code Online (Sandbox Code Playgroud) 我想初始化一个窗口最大化,但我无法找到如何做到这一点.我在Windows 7上使用python 3.3和Tkinter 8.6.我想答案就在这里:http://www.tcl.tk/man/tcl/TkCmd/wm.htm#m8 但我不知道如何输入它进入我的python脚本
此外,我需要获得窗口的宽度和高度(两者都是最大化的,如果用户之后重新缩放它),但我想我可以自己找到它.
我需要在tkinter中获取一个画布,将其宽度设置为窗口的宽度,然后在用户使窗口变小/变大时动态地重新调整画布大小.
有没有办法(轻松)这样做?
我正在写一个程序应该:
我正在使用类,所以我可以稍后将代码插入到更大的程序中.但是,我无法正确加载我的按钮.
import tkinter as tk
class Demo1(tk.Frame):
def __init__(self):
tk.Frame.__init__(self)
self.pack()
self.master.title("Demo 1")
self.button1 = tk.Button(self, text = "Button 1", width = 25,
command = self.new_window)
self.button1.grid(row = 0, column = 1, columnspan = 2, sticky = tk.W+tk.E+tk.N+tk.S)
def new_window(self):
self.newWindow = Demo2()
class Demo2(tk.Frame):
def __init__(self):
new = tk.Frame.__init__(self)
new = tk.Toplevel(self)
new.title("Demo 2")
new.button = tk.Button(text = "Button 2", width = 25,
command = self.close_window)
new.button.pack()
def close_window(self):
self.destroy()
def main():
Demo1().mainloop()
if __name__ == …Run Code Online (Sandbox Code Playgroud) 我有一个Python脚本,需要计算以任意字体显示的任意字符串的确切大小,以生成简单的图表.我可以轻松地使用Tkinter.
import Tkinter as tk
import tkFont
root = tk.Tk()
canvas = tk.Canvas(root, width=300, height=200)
canvas.pack()
(x,y) = (5,5)
text = "yellow world"
fonts = []
for (family,size) in [("times",12),("times",24)]:
font = tkFont.Font(family=family, size=size)
(w,h) = (font.measure(text),font.metrics("linespace"))
print "%s %s: (%s,%s)" % (family,size,w,h)
canvas.create_rectangle(x,y,x+w,y+h)
canvas.create_text(x,y,text=text,font=font,anchor=tk.NW)
fonts.append(font) # save object from garbage collecting
y += h+5
tk.mainloop()
Run Code Online (Sandbox Code Playgroud)
结果似乎取决于Python和/或系统的版本:
在Ned Batchelder提到它之后,我发现字体的大小因平台而异.只要你坚持与自己保持一致的Tkinter,它可能不是一个交易破坏者.但我的整个程序并没有使用Tkinter的来执行实际的绘图:它只是依靠其字体大小计算,以产生一个输出(在SVG或Python脚本被发送到Nodebox).事情就是这样:
mocodo的输出http://grab.by/grabs/f67b951d092dd1f4f490e1469a53bca2.png
(请查看实际大小的 …
尝试使用virtualenv中基于TKinter的小部件运行python代码.
user@computer:~/myproject$ env/bin/python Python
2.7.3 (default, Sep 26 2012, 21:51:14) [GCC 4.7.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.
>>> import Tkinter
Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/lib/python2.7/lib-tk/Tkinter.py", line 42, in <module>
raise ImportError, str(msg) + ', please install the python-tk package' ImportError: No module named _tkinter, please install the python-tk package
Run Code Online (Sandbox Code Playgroud)
将TK安装到virtualenv的正确方法是什么?
此代码有效:
import tkinter
root = tkinter.Tk()
canvas = tkinter.Canvas(root)
canvas.grid(row = 0, column = 0)
photo = tkinter.PhotoImage(file = './test.gif')
canvas.create_image(0, 0, image=photo)
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
它向我展示了图像.
现在,这段代码编译但它没有显示我的图像,我不知道为什么,因为它是相同的代码,在类中:
import tkinter
class Test:
def __init__(self, master):
canvas = tkinter.Canvas(master)
canvas.grid(row = 0, column = 0)
photo = tkinter.PhotoImage(file = './test.gif')
canvas.create_image(0, 0, image=photo)
root = tkinter.Tk()
test = Test(root)
root.mainloop()
Run Code Online (Sandbox Code Playgroud) 我正在尝试运行一个非常简单的代码,在集群中输出.png文件.这是代码:
import matplotlib.pyplot as plt
import numpy as np
x = np.random.randn(60)
y = np.random.randn(60)
plt.scatter(x, y, s=20)
out_png = 'path/to/store/out_file.png'
plt.savefig(out_png, dpi=150)
Run Code Online (Sandbox Code Playgroud)
如果我使用python simple_code.py安装了matplotlib 1.2.1的系统中的命令运行此代码,我会收到警告:
Unable to load library icui18n "Cannot load library icui18n:
Run Code Online (Sandbox Code Playgroud)
.png图像仍然生成,所以我没有问题.但是如果我在安装了matplotlib 1.3.0的集群中使用相同的命令和代码,则会失败并显示错误:
Traceback (most recent call last):
File "simple_code.py", line 33, in <module>
plt.scatter(x, y, s=20)
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 3078, in scatter
ax = gca()
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 803, in gca
ax = gcf().gca(**kwargs)
File "/usr/lib/pymodules/python2.7/matplotlib/pyplot.py", line 450, in gcf
return figure()
File …Run Code Online (Sandbox Code Playgroud) tkinter ×10
python ×9
python-3.x ×2
autoresize ×1
canvas ×1
class ×1
destroy ×1
fonts ×1
image ×1
matplotlib ×1
numpy ×1
size ×1
ssh ×1
virtualenv ×1