2017-11-28 14 views

답변

0

가 -do 당신이 정말로 버튼을 원하는 : 나는 이것에 대해 이야기하고 gtk.Button

여기에 유용한 아무것도 찾을 수 없습니다? 버튼과 라벨의 주요 차이점은 라벨이 이벤트를 생성하지 않지만 Gtk.EventBox에 라벨을 붙여서 만들 수 있습니다.

- 효과를 일으키는 이벤트를 사용 중지하는 방법은 다음과 같습니다. 첫 번째 장소 :

#!/usr/bin/env python3 
# -*- coding: utf-8 -*- 
# 
# test_inert_button.py 
# 
# Copyright 2017 John Coppens <[email protected]> 
# 
# This program is free software; you can redistribute it and/or modify 
# it under the terms of the GNU General Public License as published by 
# the Free Software Foundation; either version 2 of the License, or 
# (at your option) any later version. 
# 
# This program is distributed in the hope that it will be useful, 
# but WITHOUT ANY WARRANTY; without even the implied warranty of 
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 
# GNU General Public License for more details. 
# 
# You should have received a copy of the GNU General Public License 
# along with this program; if not, write to the Free Software 
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
# MA 02110-1301, USA. 
# 
# 


import gi 
gi.require_version('Gtk', '3.0') 
from gi.repository import Gtk 

class MainWindow(Gtk.Window): 
    def __init__(self): 
     super(MainWindow, self).__init__() 
     self.connect("destroy", lambda x: Gtk.main_quit()) 
     self.set_size_request(400, 300) 

     btn1 = Gtk.Button("One - inert button") 
     btn2 = Gtk.Button("Two - active button") 

     btn1.connect("enter-notify-event", self.on_leave) 
     btn1.connect("button-press-event", self.on_leave) 

     vbox = Gtk.VBox() 
     vbox.pack_start(btn1, False, False, 0) 
     vbox.pack_start(btn2, False, False, 0) 

     self.add(vbox) 
     self.show_all() 

    def on_leave(self, btn, event): 
     return True 

    def run(self): 
     Gtk.main() 


def main(args): 
    mainwdw = MainWindow() 
    mainwdw.run() 

    return 0 

if __name__ == '__main__': 
    import sys 
    sys.exit(main(sys.argv)) 

on_leave 방법의 return True 그것이 효과를하지 않도록 이벤트를 처리하는 기본 핸들러를 알려줍니다. 상단 버튼 One은 반응하지 않으며, 하단 버튼은 여전히 ​​반응합니다.

+0

이 작업은 Python2.7에서 가능합니까? – Morasiu

+0

인트로 스펙 션을 위해 필요한 모듈을 설치했다면 작동 할 것입니다. 파이썬에서'import gi'를 시도하십시오. 또한 인트로 스펙션을 위해 테이블을 설치하는 Gtk의 최신 버전이 필요하다. 가장 쉬운 방법은 위의 프로그램에서'import gi '의 3 행을 테스트하는 것입니다. 파이썬 3으로 업그레이드하는 것을 고려해보십시오 ... 생각보다 복잡하지 않습니다! – jcoppens

+0

그래,하지만 오래된 pygtk 및 7 년 된 아치 기반 시스템으로 작업해야하고 추가 모듈을 설치할 수 없으므로 ... 알 수 있습니다. – Morasiu