我开始在运行Leopard的iMac上学习ruby的基础知识.
现在我系统上的版本是ruby 1.8.6
但是,我也独立安装了(通过MacPorts)ruby 1.9,因为它对应于最新的"PickAxe"书.
ruby 1.8.6的安装位置在/ usr/bin/ruby中ruby 1.9.1的安装位置在/ opt/local/bin中(当我使用MacPorts时安装在那里)
我的问题与下面相当标准的例子中的require'tk'语句有关的错误消息有关,该例子位于文件HelloWorld.rb中
require 'tk'
root = TkRoot.new { title "Hello world" }
TkLabel.new(root) do
text 'Hello world!'
end
Tk.mainloop
Run Code Online (Sandbox Code Playgroud)
当我调用命令ruby HelloWorld.rb时,我得到了我期望的结果; 该程序运行.
但是,当我调用命令ruby1.9 HelloWorld.rb时,我收到错误消息
HelloWorld.rb:1:require': no such file to load -- tk (LoadError)
from HelloWorld.rb:1:in'
我一直在搜索网络和各种帖子,但到目前为止还没有找到一个明确的解释,我需要做什么才能使ruby1.9能够在使用require'tk'语句时找到tk.
是否与运行gem1.9命令(也在/ opt/local/bin中)有关?
我试过调用sudo gem1.9 install tk但是会导致错误消息错误:无法在本地或在存储库中找到gem tk
任何建议将不胜感激.
我正在用Tkinter编写幻灯片程序,但我不知道如何在不绑定密钥的情况下转到下一个图像.
import os, sys
import Tkinter
import Image, ImageTk
import time
root = Tkinter.Tk()
w, h = root.winfo_screenwidth(), root.winfo_screenheight()
root.overrideredirect(1)
root.geometry("%dx%d+0+0" % (w, h))
root.focus_set()
root.bind("<Escape>", lambda e: e.widget.quit())
image_path = os.path.join(os.getcwd(), 'images/')
dirlist = os.listdir(image_path)
for f in dirlist:
try:
image = Image.open(image_path+f)
tkpi = ImageTk.PhotoImage(image)
label_image = Tkinter.Label(root, image=tkpi) # ?
label_image.place(x=0,y=0,width=w,height=h)
root.mainloop(0)
except IOError:
pass
root.destroy()
Run Code Online (Sandbox Code Playgroud)
我想添加一个time.sleep(10)"而不是"root.mainloop(0),这样它将在10s后转到下一个图像.现在,当我按下ESC时它会改变.我怎么能在那里有一个计时器?
编辑:我应该补充一点,即使它工作,我也不想要另一个睡眠的线程.
所以我发现Tk类似于GNTL for linux Gtk.我想知道是否有任何类似的Tk库使用Windows原生按钮和tcl的其他组件?(它的api看起来越像Tk越好.)有没有su
我不能用我的Tcl/Tk代码中bind的Escape和Return键.以下代码重现了该错误.当我按Esc或Enter键时,我收到以下错误消息:
错误:无法读取"cmd":没有这样的变量
proc OkCancel { cmd } {
button .${cmd}.ok -text "OK" -command [list myOk $cmd ]
button .${cmd}.cancel -text "Cancel" -command [list myCancel .$cmd]
grid .${cmd}.ok .${cmd}.cancel -sticky e
bind .$cmd <Return> { myOk $cmd ; break }
bind .$cmd <Escape> { myCancel .${cmd} ; break }
}
proc myOk { cmd } {
puts "The command name is = $cmd"
}
proc myCancel { arg } {
destroy …Run Code Online (Sandbox Code Playgroud) 我有一个perl tk例程,从导入的perl模块调用一个过程.GUI正在执行子程序时挂起.这是我正在使用的代码摘录.有人可以建议一个更好的方法来执行此操作,以便在程序运行时GUI处于活动状态吗?
use Tk;
use package1;
$mw = MainWindow->new;
$mw->geometry("+10+10");
$mw->title("My notebook GUI");
my $mwFrame = $mw->Frame(-borderwidth => 2, -relief => 'ridge')->pack(-fill=> 'none',-fil=> 'x');
my $nb = $mwFrame->NoteBook(-dynamicgeometry => 'true',-ipadx => 20, -ipady => 20)->pack(-expand => 1,-fill => 'both');
$page1 = $nb->add( 'Page1', -label => 'Page 1' );
$page2 = $nb->add( 'Page2', -label => 'Page 2' );
$page1->pack();
$page2->pack();
$button1 = $page1->Button(-text => "Not Selected", -background => 'gray', -state => 'disabled')->pack(-side => 'right', -expand => 0);
$button2 = $page2->Button(-text => …Run Code Online (Sandbox Code Playgroud) 答:可以在所有OS X 10.5或更高版本上使用吗?
B.有没有更好的存储应用程序文件的地方?
首先,让我告诉你我的代码:
import Tkinter
import tkMessageBox
import time
import sys
def endProgam():
raise SystemExit
sys.exit()
top = Tkinter.Tk()
B = Tkinter.Button(top, text = "Hello", command = endProgam)
B.pack()
top.mainloop()
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,endProgram()我尝试了两种类型的退出命令,两者都不起作用.我从来没有一起使用它们,我只是试图展示我到目前为止使用的方法.这些方法是我在这里和其他网站上找到的方法,但如果我尝试任何一种方法,我会收到此错误:
Traceback (most recent call last):
File "C:\Users\Sa'id\Documents\Learning Programming\Python\Tkinter Tuts.py", line 22, in <module>
top.mainloop()
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1070, in mainloop
self.tk.mainloop(n)
File "C:\Python27\lib\lib-tk\Tkinter.py", line 1488, in __call__
raise SystemExit, msg
SystemExit
Run Code Online (Sandbox Code Playgroud)
我似乎无法找到解决方案,我希望也许有人可以帮助我.如果您需要更多细节,我很乐意为您提供所需.
我想知道如何一次获取一个Text小部件中的所有标签.所以让我们说这是我的内容:
("keyword", print) ("string", "Hello world!")
("keyword", print) ("string", "You are"), ("support", raw_input())
self.text.tag_config('keyword', foreground="orange")
self.text.tag_config('operator', foreground="blue")
self.text.tag_config('number', foreground="red")
self.text.tag_config('string', foreground="red")
self.text.tag_config('support', foreground="blue")
self.text.tag_config('comment', foreground="violet")
self.text.tag_config('error', background="red")
self.text.tag_config('warning', background="yellow")
Run Code Online (Sandbox Code Playgroud)
现在,是否有任何函数/常量只能获取我的字符串中当前的标签?它会报告['keyword', 'string', 'support'].
(注意:大多数情况下我只是想知道这个因为我很好奇.如果不存在,那就不是世界末日.:P)
注意:第二个代码块是用Python编写的,我希望在Python中得到答案.:)
我只想弄清楚如何插入变量的内容,.txt insert end $var并将我插入的内容自动显示在最后一行,而无需手动向下滚动文本.
一个简单的TCL示例:
proc push_button { } {
global k
set name [.ent get]
.txt insert end "$k New Line...$name\n"
}
global k
set k 1
frame .frm -relief groove
label .lab -text "Enter name:"
entry .ent
button .but -text "Insert Line" -command "push_button; incr k"
text .txt -width 20 -height 10
pack .lab -in .frm
pack .ent -in .frm
pack .frm
pack .but
pack .txt
Run Code Online (Sandbox Code Playgroud) 谁能告诉我下面的代码为什么不识别全局变量y?
proc add_new_seq {} {
global y 2
rid .kl15_val -row $y -column 4
incr y
}
add_new_seq
Run Code Online (Sandbox Code Playgroud)