从 Python 中的 FileChooserButton 获取文件夹路径
Get folder path from FileChooserButton in Python
我正在尝试使用 Python 和 Glade 制作一个基本的文件传输 GUI 应用程序,但在尝试从“文件选择器”对话框获取路径时遇到了一些障碍。我已经尝试了所有我知道的和能找到的但没有成功。
.glade 文件很长所以我把代码贴在这里:http://pastebin.com/wsdLMenC
我的 Python 代码看起来像这样
import datetime
from ftplib import FTP
from magip import *
from gi.repository import Gtk
class FTP():
def __init__(self):
self.builder = Gtk.Builder()
self.builder.add_from_file("ftp.glade")
go = self.builder.get_object
self.window = go("window1")
self.store_magazine = go("store_magazine")
self.combo_magazine = go("combo_magazine")
self.store_luni = go("store_luni")
self.combo_luni = go("combo_luni")
self.select_folder = go("select_folder")
self.btn_start = go("btn_start")
for ip in magazine:
self.store_magazine.append([magazine[ip]])
if host in magazine:
self.combo_magazine.set_active(magip_index[host])
for luna in luni:
self.store_luni.append([luni[luna]])
self.builder.connect_signals(Handlers())
self.window.show_all()
class Handlers():
def btn_start_clicked(self, button):
with open("btn.txt", "a") as muhfile:
text = "click {}\n".format(datetime.datetime.now())
muhfile.write(text)
if __name__ == "__main__":
gui = FTP()
Gtk.main()
Handlers class 是我要放置所有信号的地方。目前只有一个,用于测试 START
按钮。
非常感谢任何帮助。
谢谢!
您必须连接到 "file-set" 信号。处理程序 class 将如下所示:
class Handlers():
def btn_start_clicked(self, button):
with open("btn.txt", "a") as muhfile:
text = "click {}\n".format(datetime.datetime.now())
muhfile.write(text)
def directory_set(self, button):
print(button.get_filename())
Glade 文件中的 FileChooserButton 是这样的:
<child>
<object class="GtkFileChooserButton" id="select_folder">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action">select-folder</property>
<property name="create_folders">False</property>
<property name="preview_widget_active">False</property>
<property name="use_preview_label">False</property>
<property name="title" translatable="yes">Select folder</property>
<signal name="file-set" handler="directory_set" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
</packing>
</child>
我正在尝试使用 Python 和 Glade 制作一个基本的文件传输 GUI 应用程序,但在尝试从“文件选择器”对话框获取路径时遇到了一些障碍。我已经尝试了所有我知道的和能找到的但没有成功。
.glade 文件很长所以我把代码贴在这里:http://pastebin.com/wsdLMenC
我的 Python 代码看起来像这样
import datetime
from ftplib import FTP
from magip import *
from gi.repository import Gtk
class FTP():
def __init__(self):
self.builder = Gtk.Builder()
self.builder.add_from_file("ftp.glade")
go = self.builder.get_object
self.window = go("window1")
self.store_magazine = go("store_magazine")
self.combo_magazine = go("combo_magazine")
self.store_luni = go("store_luni")
self.combo_luni = go("combo_luni")
self.select_folder = go("select_folder")
self.btn_start = go("btn_start")
for ip in magazine:
self.store_magazine.append([magazine[ip]])
if host in magazine:
self.combo_magazine.set_active(magip_index[host])
for luna in luni:
self.store_luni.append([luni[luna]])
self.builder.connect_signals(Handlers())
self.window.show_all()
class Handlers():
def btn_start_clicked(self, button):
with open("btn.txt", "a") as muhfile:
text = "click {}\n".format(datetime.datetime.now())
muhfile.write(text)
if __name__ == "__main__":
gui = FTP()
Gtk.main()
Handlers class 是我要放置所有信号的地方。目前只有一个,用于测试 START
按钮。
非常感谢任何帮助。
谢谢!
您必须连接到 "file-set" 信号。处理程序 class 将如下所示:
class Handlers():
def btn_start_clicked(self, button):
with open("btn.txt", "a") as muhfile:
text = "click {}\n".format(datetime.datetime.now())
muhfile.write(text)
def directory_set(self, button):
print(button.get_filename())
Glade 文件中的 FileChooserButton 是这样的:
<child>
<object class="GtkFileChooserButton" id="select_folder">
<property name="visible">True</property>
<property name="can_focus">False</property>
<property name="action">select-folder</property>
<property name="create_folders">False</property>
<property name="preview_widget_active">False</property>
<property name="use_preview_label">False</property>
<property name="title" translatable="yes">Select folder</property>
<signal name="file-set" handler="directory_set" swapped="no"/>
</object>
<packing>
<property name="left_attach">0</property>
<property name="top_attach">3</property>
</packing>
</child>