我正在嘗試使用灰色提示進行文本輸入,該提示在有人向其中輸入文字時會變黑。已經提出了類似的問題,但更廣泛地試圖到達那裏,但沒有得到多少。但無論如何,它可以幫助其他問題。Gtk 3蟒蛇入口顏色
我的其他問題: Gtk python entry color
我正在嘗試使用灰色提示進行文本輸入,該提示在有人向其中輸入文字時會變黑。已經提出了類似的問題,但更廣泛地試圖到達那裏,但沒有得到多少。但無論如何,它可以幫助其他問題。Gtk 3蟒蛇入口顏色
我的其他問題: Gtk python entry color
有不同的部分來此解決方案。首先,着色是由css處理的,當輸入框沒有被聚焦時,文字變灰,然後變黑,因爲它獲得焦點。第二部分由您決定,如果您希望實施這一部分,則可以在文本框獲得焦點時清除框中的灰色文本。爲了方便起見,我已經將焦點放入和移出了當前僅打印到終端的事件處理程序。
代碼
from gi.repository import Gtk, Gdk
def focus_in(*args):
print 'focus_in called'
def focus_out(*args):
print 'focus_out called'
window = Gtk.Window()
window.connect('destroy', Gtk.main_quit)
screen = Gdk.Screen.get_default()
css_provider = Gtk.CssProvider()
css_provider.load_from_path('style.css')
priority = Gtk.STYLE_PROVIDER_PRIORITY_USER
context = Gtk.StyleContext()
context.add_provider_for_screen(screen, css_provider, priority)
fname = Gtk.Entry(text='First Name')
lname = Gtk.Entry(text='Last Name')
button = Gtk.Button('Submit')
fname.connect('focus-in-event', focus_in)
fname.connect('focus-out-event', focus_out)
vbox = Gtk.VBox()
vbox.add(fname)
vbox.add(lname)
vbox.add(button)
window.add(vbox)
window.show_all()
Gtk.main()
的style.css
GtkEntry {
color: darkgrey;
}
GtkEntry:focused {
color: black;
}
截圖
解決此問題的另一種完全不同的方法是利用一些優秀的HTML5功能以及適用於qt和gtk的優秀webkit庫。下面將介紹qt和gtk的使用示例。您希望實現的功能在HTML5中可用作稱爲佔位符的屬性。你可以看到一個不錯的demo of this on w3schools。
<input type="text" name="fname" placeholder="First name" />
然後你用HTML和webkit實現你的字段和表單。然後有很多方法可以在你的html和python代碼之間進行通信。我發現HTML創建用戶界面更容易和更有文檔記錄。
GTK版本
import gtk, webkit
HTML = """
<!DOCTYPE html><html><body>
<form>
<input type="text" name="fname" placeholder="First name" /><br>
<input type="text" name="lname" placeholder="Last name" /><br>
<input type="button" value="Submit" />
</form>
</body></html>
"""
win = gtk.Window(gtk.WINDOW_TOPLEVEL)
win.connect('destroy', gtk.main_quit)
view = webkit.WebView()
view.load_html_string(HTML, 'file:///')
win.add(view)
win.show_all()
gtk.main()
截圖
QT版本
import sys
from PyQt4 import QtCore, QtGui, QtWebKit
HTML = """
<!DOCTYPE html><html><body>
<form>
<input type="text" name="fname" placeholder="First name" /><br>
<input type="text" name="lname" placeholder="Last name" /><br>
<input type="button" value="Submit" />
</form>
</body></html>
"""
app = QtGui.QApplication(sys.argv)
view = QtWebKit.QWebView()
view.setHtml(HTML)
window = QtGui.QMainWindow()
window.setCentralWidget(view)
window.show()
sys.exit(app.exec_())
sceenshot
最後說明 當與界面交互,你會看到的WebKit的placeholder
功能在,感覺自然和爲預期的方式實現。如果您決定自己實現這些功能,這些類型的功能很難正確糾正,所以這只是要注意的一點。在GTK 3.2和更高版本
entry.set_placeholder_text('First name')
作品:
請不要在工具包提供了一個非常好的設施爲佔位符文本中使用CSS或HTML。
如果您以前關閉過相同的問題,請不要重新發布相同的問題。獲得答案的更好方法是在前一篇文章中進行更改並重新打開。 – asheeshr
[gtk + python entry color]可能的重複(http://stackoverflow.com/questions/13655829/gtk-python-entry-color) – Junuxx
不是同一個問題... – CondeGil