标签: tkinter

在tkinter中使用import*方法是不好的做法吗?

从我读过的内容和给出的理由,我知道这种from foo import *方法是不好的做法,因为变量赋值的复杂性以及内存问题.但是,该tkinter模块是否会成为此规则的例外?

我认为在使用GUI时,可能会考虑使用相应模块中的大多数功能/方法,与之类似itertools,可能只需要访问少数几个模块(一个不需要使用permutations combinations).

无论是否tkinter是例外,是否有任何模块?

python tk-toolkit tkinter python-3.x

0
推荐指数
1
解决办法
145
查看次数

使用overrideredirect时拖动窗口

我知道如何使用Tkinter窗口删除边框overrideredirect,但每当我这样做时,窗口就会变得无法响应.我无法使用alt和拖动或任何其他方法移动它.
我想创建一个看起来像那些只是一个裸窗口的"riced"应用程序之一的应用程序,显然如果它只是在左上角没有响应,我就无法走得太远.那么,我该怎么做?

python tkinter draggable

0
推荐指数
1
解决办法
1597
查看次数

Python 3.4使用变量赋值变量

这是一个相当简单的问题;

我知道你可以这样做:

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)

python tkinter

0
推荐指数
1
解决办法
76
查看次数

如何在方法中调用金额

# 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)

python methods tkinter

0
推荐指数
1
解决办法
63
查看次数

Python函数无法正常工作--Tkinter

我的功能是没有给我正确的输出,它不想工作.我一直收到这个错误:

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)

我希望它根据它是什么按钮显示商店列表中的内容...

python tkinter function list python-2.7

0
推荐指数
1
解决办法
107
查看次数

通过TKinter使用[时钟格式]改变proc如何返回""

我正在使用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)

python tkinter tcl type-conversion

0
推荐指数
1
解决办法
72
查看次数

在tkinter中创建自定义小部件

我想在tkinter中创建一个自定义窗口小部件,以便在实例化时显示标签和输入框。示例我创建了一个名为entry的类,并调用as .. entry('name',master),这将在输入框旁边显示一个标签,其文本为main。我已经成功地做到了,但是我的问题是几何管理器。他们似乎都弄乱了一切

python tkinter

0
推荐指数
1
解决办法
5930
查看次数

我们如何更改此框架的标题?

我正在玩我在网上发现的一些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)

python tkinter

0
推荐指数
1
解决办法
246
查看次数

Tkinter - AttributeError:'str'对象没有属性'set'

这是我创建的代码,我正在尝试运行:

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)

python string tkinter set optionmenu

0
推荐指数
1
解决办法
7858
查看次数

使用Tkinter处理未捕获的异常

在我的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 tkinter

0
推荐指数
1
解决办法
474
查看次数