2013-07-01 49 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

您似乎在創建一個有2行6列的表格,而不是6行和2列我假設您已經過了 - 請看the reference documentation,您會在構造函數中看到第一行。

因爲你設置homogenousTrue,表中設置的所有列相同的寬度和高度(這是homogenous一樣),因爲你自找的6列,它加入了很多空白的人的相同的寬度使您的窗戶非常寬闊。

行更改爲:

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

...它似乎更合理。那是你之後的事情嗎?

我個人建議創建一個HBox來表示該列。當您需要全寬度小部件時,您可以將它們直接放置到此容器中。如果您需要一個包含多個小部件的行,您可以創建一個VBox來表示該行,將小部件添加到該行,然後將VBox本身添加到HBox。這種方法一開始可能看起來略微不靈活,但它允許GTK處理更多的佈局本身,這通常會使您的應用程序處理更好地調整大小(只要您正確地提示每個小部件是否可擴展)。此外,如果稍後添加更多小部件,則不需要返回並更改行數和列數 - VBoxHBox在這方面更加靈活。總的來說,除非我真的是一個固定的小部件網格(例如,如果我正在實施掃雷),否則我總是發現這些更容易。

+0

非常感謝!我使用True,因爲我遵循了那裏的教程,所有人都使用True ...好吧,這意味着,表格在這個公式中:row,column。我認爲這是列,行...無論如何,謝謝。你解決了我的問題! – user27731

+0

非常歡迎。簡單地說,使用'Table'和'homogenous'作爲'True'並沒有什麼錯誤*,只要這就是你想要的 - 只要你喜歡你的小部件擴大填充空間,這是你的決定。我只是想說,你可能希望將來看看'HBox'和'VBox',因爲我個人覺得它們更容易。無論如何,祝你好運! – Cartroo

相關問題