2013-07-01 3 views
0

저는 PYGTK를 사용하여 wGet과 Python을 모두 사용하는 아주 간단한 다운로드 관리자를 프로그램하고 있습니다. 모든 것이 잘 수행하지만 화면 공간을 많이 먹는 ... 내 코드 : 그것은 오른쪽에 사용되지 않는 공간을 많이 던졌습니다PYGTK는 예상보다 많은 화면 공간을 사용합니다.

#!/usr/bin/python 
import gtk 
import os 
def submitdownload(self): 
    os.system("wget "+site.get_text() + " -P "+ directory.get_text()) 
main=gtk.Window() 
main.set_title("Simple Downloader with wGet") 
structure=gtk.Table(2, 6, True) 
label=gtk.Label("Simple downloader with wGet") 
sitedes=gtk.Label("Your download link:") 
site=gtk.Entry() 
submit=gtk.Button("Submit download") 
submit.connect("clicked", submitdownload) 
directorydes=gtk.Label("Save to: ") 
directory=gtk.Entry() 
description=gtk.Label("Please don't close the black box (terminal window) or the application will close automatically. It is needed for the download.") 
main.add(structure) 
structure.attach(label, 0, 2, 0, 1) 
structure.attach(sitedes, 0, 1, 1, 2) 
structure.attach(site, 1, 2, 1, 2) 
structure.attach(submit, 0, 2, 4, 5) 
structure.attach(directorydes, 0, 1, 2, 3) 
structure.attach(directory, 1, 2, 2, 3) 
structure.attach(description, 0, 2, 5, 6) 
main.connect("destroy", lambda w: gtk.main_quit()) 
main.show_all() 
gtk.main() 

. 그것을 고치는 방법? 'X'버튼을 사용하여 응용 프로그램을 닫는 것은 매우 어렵습니다.

+1

좋아요. 나는 대답을 받았다고 생각 ... – user27731

답변

1

6 행 2 열 대신에 2 행 6 열의 테이블을 만드는 것처럼 보입니다. 내가 생각한대로 the reference documentation을 보면 행이 생성자에서 처음으로 표시됩니다.

당신이 Truehomogenous을 설정 한 때문에, 테이블은 같은 폭과 높이에 모든 열 (즉 homogenous가하는 일입니다)를 설정하고, 당신이 6 열을 요청했기 때문에, 그것은 빈 사람을 많이 추가하는 것 너비가 너비가 넓어지는 너비.

변경 라인 :

structure = gtk.Table(6, 2, True) 

... 그리고 그것은 더 합리적인 것 같다. 그게 너였던거야?

필자는 개인적으로 열을 나타내는 HBox을 만들 것을 제안합니다. 전체 너비 widget이 필요하면이 컨테이너에 직접 배치 할 수 있습니다. 여러 위젯이있는 행이 필요한 경우 행을 나타내는 VBox을 만들고 위젯을 추가 한 다음 HBoxVBox 그 자체를 추가 할 수 있습니다. 이 접근법은 처음에는 다소 까다로운 것처럼 보일 수 있지만, GTK는 레이아웃 위주로 더 많은 핸들을 처리 할 수 ​​있습니다. 일반적으로 어플리케이션 위젯의 크기를 더 잘 조절할 수 있습니다 (각 위젯을 확장 할 수 있는지 여부를 정확하게 알리는 한). 나중에 더 많은 위젯을 추가하면 다시 돌아가서 행과 열의 수를 변경할 필요가 없습니다. VBoxHBox은 더 유연합니다. 전반적으로, 필자가해야할 일이 실제로 위젯의 고정 그리드 (예 : 지뢰밭을 구현하는 경우)가 아니면 않는 한 항상 쉽게 찾을 수있었습니다.

+0

대단히 고마워요! 내가 튜토리얼을 따라 갔기 때문에 True를 사용했고, 모두 True를 사용했습니다 ... 좋습니다. 즉, 테이블은이 수식에 있습니다 : 행, 열. 나는 그것이 열, 행이라고 생각했다. .. 여하튼, 감사합니다. 당신은 내 문제를 해결했습니다! – user27731

+0

대단히 반갑습니다. 말하자면,'Table'을 사용할 때 잘못된 * 것은 없으며'True'로'동질성 '을 사용하면 괜찮습니다. 원하는대로 선택하면됩니다. 위젯이 공간을 채우는 것을 선호한다면 당신의 결정입니다. 개인적으로 더 쉽게 찾을 수 있기 때문에 앞으로 HBox와 VBox를 보길 원합니다. 어쨌든 행운을 빌어 요! – Cartroo

관련 문제