0
A
답변
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
은 반응하지 않으며, 하단 버튼은 여전히 반응합니다.
이 작업은 Python2.7에서 가능합니까? – Morasiu
인트로 스펙 션을 위해 필요한 모듈을 설치했다면 작동 할 것입니다. 파이썬에서'import gi'를 시도하십시오. 또한 인트로 스펙션을 위해 테이블을 설치하는 Gtk의 최신 버전이 필요하다. 가장 쉬운 방법은 위의 프로그램에서'import gi '의 3 행을 테스트하는 것입니다. 파이썬 3으로 업그레이드하는 것을 고려해보십시오 ... 생각보다 복잡하지 않습니다! – jcoppens
그래,하지만 오래된 pygtk 및 7 년 된 아치 기반 시스템으로 작업해야하고 추가 모듈을 설치할 수 없으므로 ... 알 수 있습니다. – Morasiu