2016-02-10 1 views
0

im new topython 2.7 и узнать, можно ли открыть текстовое окно tkinter с комбинацией кнопок на клавиатуре (Ctrl + alt + 'something') , который появляется как окна сообщение об ошибкекомбинация кнопок python, чтобы открыть окно сообщения tkinter

import win32api 
import time 
import math 
import Tkinter 
import tkMessageBox 

top = Tkinter.Tk() 
def Message(): 
    tkMessageBox.showinfo("Window", "Text") 

for i in range(9000): 
    x = int(600+math.sin(math.pi*i/100)*500) 
    y = int(500+math.cos(i)*100) 
    win32api.SetCursorPos((x,y)) 
    time.sleep(.01) 

ответ

1

Да, вы можете связать контролировать и альт символов. Привязки довольно хорошо документированы. Вот один хороший источник информации:

http://effbot.org/tkinterbook/tkinter-events-and-bindings.htm

В качестве примера, чтобы связываться с Ctrl-Alt-х вы могли бы сделать это:

top.bind("<Control-Alt-x>", Message) 

Вы можете связать с последовательностью событий, указав всей последовательности. Например, если вы хотите реализовать чит-код вы могли бы сделать что-то вроде этого:

label.bind("<c><h><e><a><t>", Message) 

Для писем "a" такое же, как "<a>", так что вы можете сделать это:

label.bind("cheat", Message) 

Здесь полный рабочий пример:

import Tkinter as tk 
import tkMessageBox 

def Message(event=None): 
    tkMessageBox.showinfo("Window", "Text") 

def Cheat(event=None): 
    tkMessageBox.showinfo("Window", "Cheat Enabled!") 


root = tk.Tk() 
label = tk.Label(root, text="Press control-alt-m to see the messagebox\ntype 'cheat' to enable cheat.") 
label.pack(fill="both", expand=True, padx=10, pady=100) 

label.bind("<Control-Alt-x>", Message) 
label.bind("<c><h><e><a><t>", Cheat) 
label.focus_set() 

root.mainloop() 
+0

ok сначала у меня появились некоторые проблемы, но я должен был назвать его test.py, а не test.pyw, но спасибо за помощь –

0

Если вы хотите что-то вроде: Нажмите кнопку A, затем нажмите кнопку B, затем откройте окно сообщения, это возможно.

ли что-то вроде:

from Tkinter import * 
import tkMessageBox 

def change(): 
    global switch 
    switch=True 

def new_window(): 
    if switch: 
     tkMessageBox.showinfo("Random name", "Correct combination") 
    else: 
     print "Not the correct order" 
root = Tk() 
switch = False 
root.bind("<A>", change) 
root.bind("<B>",new_window) 
root.mainloop() 

Если вы хотите больше кнопок, то используйте целое число и увеличить его, используя переключатели для правильной последовательности кнопок.

Обратите внимание, что вы можете связать комбинации клавиш, а также с root.bind("<Shift-E>"), например

Edit: Теперь и кнопки клавиатуры б InstEd кнопок Tkinter

+0

к сожалению имел в виду комбинацию кнопок на клавиатуре –

+0

Как вы можете связать кнопки клавиатуры для функций таким же образом, это должно быть легко. Я отредактирую свой ответ в соответствии с этим, как только я доберусь до компьютера –

Смежные вопросы