tkinter获取额外的空白gui,并且没有鼠标事件超过图像

时间:2014-10-29 14:19:26

标签: python events tkinter

我有一个编码,它会在双击时输出gui中的坐标(行和列)。

问题:

  

1.我想要一张背景图片,如果我想知道背景图片上的坐标,即使双击后我也没有   结果。

     

2.它产生2个gui,其中一个给出原始gui,另一个是一个小空白gui,我没有要求。我只需要第一个   tkinter窗口不是第二个

from Tkinter import *
import tkMessageBox
import Tkinter
import Tkinter as tki
import tkFileDialog as th1

class App(object):

    def __init__(self,root):
        self.root = root

    # create a Frame for the Text and Scrollbar
        txt_frm = tki.Frame(self.root, width=900, height=900)
        txt_frm.pack(fill="both", expand=True)
        # ensure a consistent GUI size
        txt_frm.grid_propagate(False)

    # create first Text label, widget and scrollbar
        self.lbl1 = tki.Label(txt_frm, text="Type")
        self.lbl1.grid(row=0,column=0,padx=2,pady=2)

        self.txt1 = tki.Text(txt_frm, borderwidth=3, relief="sunken", height=4,width=55)
        self.txt1.config(font=("consolas", 12), undo=True, wrap='word')
        self.txt1.grid(row=25, column=7, sticky="nsew", padx=2, pady=2)

        scrollb1 = tki.Scrollbar(txt_frm, command=self.txt1.yview)
        scrollb1.grid(row=25, column=7, sticky='nsew')
        self.txt1['yscrollcommand'] = scrollb1.set
        button = tki.Button(txt_frm,text="Click After Text", command = self.retrieve_input)

        button.grid(column=7,row=27)
        button1 = tki.Button(txt_frm,text="Clear", command = self.clearBox)
        button1.grid(column=7,row=28)

        self.image = Tkinter.PhotoImage(file='linux.gif') 

        image1 = Tkinter.Label(txt_frm, image=self.image).grid() 
        def clicked(event):
            n=100
            print "The user clicked at coordinates", event.x/n, event.y/n
            a='Row=%s,Column=%s'%(event.x/n, event.y/n)

        txt_frm.bind("<Double-Button-1>", clicked)


    def retrieve_input(self):
        input1 = self.txt1.get("0.0",'end-1c')
        with open('textme.txt','a+') as f:
            f.write(input1+'\n')
        f.close()
    def clearBox(self):
        self.txt1.delete('1.0', 'end')#<-0.0/1.0

def file_save():
    f = th1.asksaveasfile(mode='w', defaultextension=".txt")
    filename = f.name

    return filename
root = tki.Tk()
menubar=Menu(root)
root.configure(menu=menubar)

filemenu=Menu(menubar,tearoff=0)
menubar.add_cascade(label="File", menu=filemenu)
filemenu.add_command(label="Save", command=file_save)        
app = App(root)
root.mainloop()

请提及我的编码错误。

1 个答案:

答案 0 :(得分:2)

问题在于您将双击事件绑定到txt_frm(这是一个坏名称btw,而不是使用全名)而不是root,因为您需要方法{{每次执行双击时都要调用。只需将这一行更改为

即可
clicked

如果您想将图片用作背景,请参阅this question