从我读过的内容和给出的理由,我知道这种from foo import *方法是不好的做法,因为变量赋值的复杂性以及内存问题.但是,该tkinter模块是否会成为此规则的例外?
我认为在使用GUI时,可能会考虑使用相应模块中的大多数功能/方法,与之类似itertools,可能只需要访问少数几个模块(一个不需要使用permutations 和 combinations).
无论是否tkinter是例外,是否有任何模块?
我知道如何使用Tkinter窗口删除边框overrideredirect,但每当我这样做时,窗口就会变得无法响应.我无法使用alt和拖动或任何其他方法移动它.
我想创建一个看起来像那些只是一个裸窗口的"riced"应用程序之一的应用程序,显然如果它只是在左上角没有响应,我就无法走得太远.那么,我该怎么做?
这是一个相当简单的问题;
我知道你可以这样做:
foo = 1,
self.card1 = "This is card number %s." % (foo)
Run Code Online (Sandbox Code Playgroud)
但我试图将函数给出的变量赋给名称本身:
def card(foo):
self.foo = foo
self.usrCrdImg%self.foo = Image.open(self.crdStk[randint(1, 50)])
self.usrCrdBg%self.foo = ImageTk.PhotoImage(usrCrdImg%self.foo)
self.usrCrd%self.foo = tkinter.Label(root, image=usrCrdBg%self.foo)
self.usrCrd%self.foo.image = self.usrCrdBg%self.foo
card(1)
#Should Execute like this
def card(1):
self.usrCrdImg1 = Image.open(self.crdStk[randint(1, 50)])
self.usrCrdBg1 = ImageTk.PhotoImage(usrCrdImg1)
self.usrCrd1 = tkinter.Label(root, image=usrCrdBg1)
self.usrCrd1.image = self.usrCrdBg1
Run Code Online (Sandbox Code Playgroud)
一旦我得到了这个问题的答案,我还有另外一个问题要问.
import tkinter
import winsound
from tkinter import *
from PIL import Image, ImageTk
from random import randint, randrange
class CardGame(tkinter.Frame):
def …Run Code Online (Sandbox Code Playgroud) # Tip Calculator
from tkinter import *
class TipCalc:
def __init__(self):
my_window = Tk() # create a window
my_window.title("Tip Calculator")
my_window.geometry('400x200')
amount = StringVar()
# create frames labels, entry, and buttons
frm_upper = Frame(my_window)
frm_upper.pack()
frm_mid = Frame(my_window)
frm_mid.pack()
frm_lower = Frame(my_window)
frm_lower.pack()
# create label and entry for amount
amount_label = Label(frm_upper, text = "Enter Amount: ")
my_entry = Entry(frm_upper, textvariable = amount)
my_entry.delete(0, END)
my_entry.insert(0, "")
# create a label for total amount
total_label = Label(frm_mid, text = …Run Code Online (Sandbox Code Playgroud) 我的功能是没有给我正确的输出,它不想工作.我一直收到这个错误:
TypeError: list indices must be integers, not str
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
def showShop(level = level, cash = cash):
top = Tkinter.Tk()
shop = ["$100 & level 2 - Shotgun", "$250 & level 3 - 5 Grenades", "$500 & level 5 - Rocket Launcher"]
buttons = []
for i in shop:
temp = shop[i]
temp = Tkinter.Button(top, height=10, width=100, text = temp, command = shopping(i))
temp.pack()
buttons.append(temp)
top.mainloop()
Run Code Online (Sandbox Code Playgroud)
我希望它根据它是什么按钮显示商店列表中的内容...
我正在使用TKinter从Python访问现有的Tcl库.其中一个Tcl过程在列表中查找值,如果未找到该值则返回"".Python代码将返回值视为unicode,并检查它是否等于"".这完全有效,直到在Tcl代码中调用[时钟格式].之后,Python代码将返回值视为元组.我可以为Python代码添加一些额外的逻辑来处理这个问题,但似乎有一些更大的问题正在发生,可能会产生其他影响.
示例Python程序:
import Tkinter
_tclsh = Tkinter.Tcl()
_tclsh.eval('proc returnBlank { } { return "" }')
_tclsh.eval('proc returnNotBlank { } { return "not blank" }')
print "Before calling clock"
_tclsh.eval('set shouldBeBlank [returnBlank]')
shouldBeBlank = _tclsh.getvar('shouldBeBlank')
print "shouldBeBlank is ", shouldBeBlank, " with type ", type(shouldBeBlank)
_tclsh.eval('set shouldNotBeBlank [returnNotBlank]')
shouldNotBeBlank = _tclsh.getvar('shouldNotBeBlank')
print "shouldNotBeBlank is ", shouldNotBeBlank, " with type ", type(shouldNotBeBlank)
print "\nCalling [clock seconds]"
_tclsh.eval('puts [clock seconds]')
_tclsh.eval('set shouldBeBlank [returnBlank]')
shouldBeBlank = _tclsh.getvar('shouldBeBlank')
print "shouldBeBlank is ", shouldBeBlank, " with …Run Code Online (Sandbox Code Playgroud) 我想在tkinter中创建一个自定义窗口小部件,以便在实例化时显示标签和输入框。示例我创建了一个名为entry的类,并调用as .. entry('name',master),这将在输入框旁边显示一个标签,其文本为main。我已经成功地做到了,但是我的问题是几何管理器。他们似乎都弄乱了一切
我正在玩我在网上发现的一些Tkinter代码:
from Tkinter import *
class ScrolledList(Frame):
def __init__(self, options, parent=None):
Frame.__init__(self, parent)
self.pack(expand=YES, fill=BOTH)
self.makeWidgets(options)
def handleList(self, event):
index = self.listbox.curselection()
label = self.listbox.get(index)
self.runCommand(label)
def makeWidgets(self, options):
sbar = Scrollbar(self)
list = Listbox(self, relief=SUNKEN)
sbar.config(command=list.yview)
list.config(yscrollcommand=sbar.set)
sbar.pack(side=RIGHT, fill=Y)
list.pack(side=LEFT, expand=YES, fill=BOTH)
pos = 0
for label in options:
list.insert(pos, label)
pos = pos + 1
list.bind('<Double-1>', self.handleList)
self.listbox = list
def runCommand(self, selection):
print 'You selected:', selection
if __name__ == '__main__':
options = map((lambda x: 'Lumberjack-' + str(x)), …Run Code Online (Sandbox Code Playgroud) 这是我创建的代码,我正在尝试运行:
import tkinter as tk
def ok(val):
print("Value is: ", val)
def say_hi(self):
print("hi there, everyone!")
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
master.title("Hi There")
master.geometry("400x400")
self.createWidgets(master)
def createWidgets(self, master=None):
var = str()
self.select = tk.OptionMenu(master, var, "one", "two","three", command=ok).grid(column=1, row=1)
self.QUIT = tk.Button(master, text="QUIT", fg="red", command=root.destroy).grid(column=2, row=1)
print ("HI")
root = tk.Tk()
app = Application(master=root)
app.mainloop()
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python34\lib\tkinter\__init__.py", line 1533, in __call__
return self.func(*args)
File "C:\Python34\lib\tkinter\__init__.py", line 3308, in …Run Code Online (Sandbox Code Playgroud) 在我的Tkinter Python应用程序中,我试图用来sys.excepthook处理未捕获的异常,但我的处理程序从未被调用过.堆栈跟踪仍然打印出来.
如何在Tkinter应用程序中处理未捕获的异常?
这是一个简单的例子,展示了我的尝试:
import Tkinter as tk
import tkMessageBox
import traceback
import sys
class MyApp(tk.Frame):
def __init__(self, parent, *args, **kwargs):
tk.Frame.__init__(self, parent, *args, **kwargs)
self.parent = parent
self.button_frame = tk.Frame(self)
self.button_frame.pack(side='top')
self.button_run = tk.Button(
self.button_frame, text="Run", command=self.run
)
self.button_run.grid(row=0, column=1, sticky='W')
def run(self):
tkMessageBox.showinfo('Info', 'The process is running.')
raise RuntimeError('Tripped.')
def main():
root = tk.Tk() # parent widget
MyApp(root).pack(fill='both', expand=True)
def handle_exception(exc_type, exc_value, exc_traceback):
message = ''.join(traceback.format_exception(exc_type,
exc_value,
exc_traceback))
tkMessageBox.showerror('Error', message)
sys.excepthook = handle_exception
root.mainloop() # enter …Run Code Online (Sandbox Code Playgroud) python ×10
tkinter ×10
draggable ×1
function ×1
list ×1
methods ×1
optionmenu ×1
python-2.7 ×1
python-3.x ×1
set ×1
string ×1
tcl ×1
tk-toolkit ×1